define(['vue', 'axios', 'manager-box', 'leader-box', 'student-box', 'jquery', 'bootstrap', 'backend', 'table', 'form', 'qrcode', 'ai-helper'], function (Vue, Axios, ManagerBox, LeaderBox, StudentBox, $, Bootstrap, Backend, Table, Form, QRCode, AiHelper) {

    // 全局函数：调整iframe高度 - 修复函数未定义错误
    window.adjustIframeHeight = function (iframe) {
        try {
            if (iframe && iframe.contentWindow && iframe.contentWindow.document) {
                var iframeHeight = Math.max(
                    iframe.contentWindow.document.body.scrollHeight,
                    iframe.contentWindow.document.documentElement.scrollHeight,
                    iframe.contentWindow.document.body.offsetHeight,
                    iframe.contentWindow.document.documentElement.offsetHeight
                );
                iframe.style.height = iframeHeight + 'px';
            }
        } catch (e) {
            // 调整iframe高度失败，忽略错误
        }
    };

    // Layer冲突修复 - 在Controller定义之前执行777
    function fixLayerConflict() {
        // 检查并修复Layer对象
        if (typeof Layer === 'undefined' && typeof layer !== 'undefined') {
            window.Layer = layer;
        }
        if (typeof layer === 'undefined' && typeof Layer !== 'undefined') {
            window.layer = Layer;
        }

        // 添加安全的Layer方法
        if (typeof Layer !== 'undefined') {
            if (!Layer.getFrameIndex) {
                Layer.getFrameIndex = function (name) {
                    try {
                        if (window.parent && window.parent.layer && window.parent.layer.getFrameIndex) {
                            return window.parent.layer.getFrameIndex(name);
                        }
                        return null;
                    } catch (e) {
                        return null;
                    }
                };
            }

            if (!Layer.alert) {
                Layer.alert = function (content, options, callback) {
                    try {
                        if (layer && layer.alert) {
                            return layer.alert(content, options, callback);
                        } else if (window.parent && window.parent.layer && window.parent.layer.alert) {
                            return window.parent.layer.alert(content, options, callback);
                        } else {
                            alert(content);
                        }
                    } catch (e) {
                        alert(content);
                    }
                };
            }
        }
    }

    // 立即执行修复
    fixLayerConflict();

    var Controller = {
        index: function () {
            // 权限控制：只有超级管理员(group_id=1)或学校管理员(group_id=3)才能看到学校选项卡
            // group_id=8是社区管理用户，group_id=3是学校管理用户
            function applyPermissionControl() {
                var userGroupId = Config.admin && Config.admin.group_id ? parseInt(Config.admin.group_id) : null;
                var hasSchoolPermission = (userGroupId === 1 || userGroupId === 3); // 超级管理员或学校管理员

                if (!hasSchoolPermission) {
                    // 隐藏学校选项卡
                    $('.school-tab-li').hide();

                    // 隐藏学校tab-content内容区域
                    $('#schoolTab').removeClass('in active').hide();
                    $('.school-tab-content').removeClass('in active').hide();

                    // 隐藏学校相关的所有表格和控制器
                    $('#school-class-toggle-controller').hide();
                    $('#schoolAll, #schoolOngoing, #schoolEnded, #schoolUnscheduled').hide();
                    $('#schoolAllTableContainer, #schoolOngoingTableContainer, #schoolEndedTableContainer, #schoolUnscheduledTableContainer').hide();
                    $('#schoolAllTable, #schoolOngoingTable, #schoolEndedTable, #schoolUnscheduledTable').hide();

                    // 激活社区选项卡
                    $('.community-tab-li').addClass('active');
                    $('#communityTab').addClass('in active').show();
                    $('.community-tab-content').addClass('in active').show();
                } else {
                    // 显示学校选项卡和内容（默认状态）
                    $('.school-tab-li').show();
                    $('#schoolTab').show();
                    $('.school-tab-content').show();

                    // 显示学校相关的控制器和表格
                    $('#school-class-toggle-controller').show();
                    $('#schoolAll, #schoolOngoing, #schoolEnded, #schoolUnscheduled').show();
                    $('#schoolAllTableContainer, #schoolOngoingTableContainer, #schoolEndedTableContainer, #schoolUnscheduledTableContainer').show();
                    $('#schoolAllTable, #schoolOngoingTable, #schoolEndedTable, #schoolUnscheduledTable').show();

                    // 显示社区选项卡
                    $('.community-tab-li').show();
                    $('#communityTab').show();
                    $('.community-tab-content').show();
                }
            }

            // 延迟执行权限控制，确保DOM完全加载
            setTimeout(function () {
                applyPermissionControl();
                // 初始化时自动选中全部班级选项卡
                Controller.api.initializeAllClassesTabs();
                // 初始化搜索功能
                Controller.api.initSmartSearch();
            }, 100);

            // 操作指引展开/收起功能
            $(document).on('click', '#toggleGuide', function () {
                var $content = $('#guideContent');
                var $button = $(this);
                var $icon = $button.find('i');

                if ($content.is(':visible')) {
                    $content.slideUp(300);
                    $icon.removeClass('fa-chevron-up').addClass('fa-chevron-down');
                    $button.html('<i class="fa fa-chevron-down"></i> 展开');
                } else {
                    $content.slideDown(300);
                    $icon.removeClass('fa-chevron-down').addClass('fa-chevron-up');
                    $button.html('<i class="fa fa-chevron-up"></i> 收起');
                }
            });

            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'classes/classes/index',
                    add_url: 'classes/classes/add?classes_type=' + (Config.relType === 1 ? 1 : (Config.relType === 2 ? 2 : 3)),
                    edit_url: 'classes/classes/edit?classes_type=' + (Config.relType === 1 ? 1 : (Config.relType === 2 ? 2 : 3)),
                    multi_url: 'classes/classes/multi?classes_type=' + (Config.relType === 1 ? 1 : (Config.relType === 2 ? 2 : 3)),
                    del_url: 'classes/classes/del?classes_type=' + (Config.relType === 1 ? 1 : (Config.relType === 2 ? 2 : 3)),
                    table: 'classes',
                }
            });

            var table = $("#table");

            // 初始化表格A
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                queryParams: function (params) {
                    params.rel_type = Config.relType;
                    params.rel_id = Config.relId;
                    // 确保搜索参数正确传递
                    if (params.searchText) {
                        params.keyword = params.searchText;
                    }
                    return params;
                },
                responseHandler: function (res) {
                    // 统一处理搜索和index的数据格式
                    if (res.code === 1) {
                        return {
                            total: res.total || (res.data ? res.data.length : 0),
                            rows: res.data || res.rows
                        };
                    }
                    // 处理标准格式（index和修正后的search）
                    if (res.total !== undefined && res.rows !== undefined) {
                        return {
                            total: res.total,
                            rows: res.rows
                        };
                    }
                    return {
                        total: 0,
                        rows: []
                    };
                },
                escape: false,
                pk: 'id',
                pageSize: 30,
                sortName: 'sequence_number', // 默认按序号排序
                sortOrder: 'dasc', // 默认升序
                search: true, // 启用搜索功能以显示搜索框
                showSearch: true, // 显示搜索框
                searchOnEnterKey: false, // 禁用回车键搜索，使用我们的自定义搜索
                showRefresh: true, // 显示刷新按钮
                showColumns: true, // 显示列选择按钮
                columns: [
                    [
                        { checkbox: true },
                        { field: 'id', title: '班级ID', operate: '=', searchable: true }, // 支持精确搜索
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                // 使用格式化的序号，如果没有则显示空字符串
                                if (row.formatted_sequence) {
                                    // 根据班级类型添加不同的样式
                                    var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'school_id', title: '学校', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: this.api.formatter.className },
                        { field: 'rel_id', title: '学校' },
                        { field: 'school_name', title: '学校名称', operate: 'LIKE', searchable: true },
                        { field: 'city_name', title: '城市名称', operate: 'LIKE', searchable: true },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'subject_lv', title: '课程类别' },
                        { field: 'num', title: '班级人数' },
                        { field: 'apply_num', title: '报名人数' },
                        { field: 'price', title: '学费' },
                        { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                        { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                        {
                            field: 'imgcode',
                            title: '报名进度',
                            formatter: function (value, row) {
                                return `<div id="chart-${row.id}" ></div>`;
                            }
                        },
                        { field: 'count_total', title: '课节数' },
                        {
                            field: 'status',
                            title: '状态',
                            searchList: { '1': '正常', '0': '关闭' },
                            formatter: function (value, row) {
                                var checked = value == '1' ? 'checked' : '';
                                return '<input type="checkbox" class="status-toggle" data-id="' + row.id + '" data-status="' + value + '" ' + checked + ' />';
                            }
                        },
                        {
                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'info',
                                    classname: 'btn btn-xs btn-info btn-click',
                                    icon: 'fa fa-user-graduate',
                                    title: '学生',
                                    click: function (value, row, index) {
                                        Backend.api.open('/classes/student?cid=' + row.id + '&ref=addtabs', '学生', {
                                            max: true,
                                            area: ['80%', '80%'],
                                            title: "学生",
                                            callback: function (data) {
                                                Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "学生" });
                                            }
                                        });
                                    },
                                    on: {
                                        mouseenter: function (e) {
                                            layer.tips('学生', e.currentTarget, {
                                                tips: [1, '#0BB2D4'], // 提示框位置和颜色
                                                time: 0 // 不自动关闭
                                            });
                                        },
                                        mouseleave: function () {
                                            layer.closeAll('tips'); // 关闭所有提示
                                        }
                                    }
                                },
                                {
                                    name: 'info',
                                    classname: 'btn btn-xs btn-danger btn-click',
                                    icon: 'fa fa-user-graduate',
                                    title: '管理员',
                                    click: function (value, row, index) {
                                        Backend.api.open('/classes/manager?cid=' + row.id + '&ref=addtabs', '管理员', {
                                            max: true,
                                            area: ['80%', '80%'],
                                            title: "管理员",
                                            callback: function (data) {
                                                Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "管理员" });
                                            }
                                        });
                                    },
                                    on: {
                                        mouseenter: function (e) {
                                            layer.tips('管理员', e.currentTarget, {
                                                tips: [1, '#FF5722'], // 提示框位置和颜色
                                                time: 0 // 不自动关闭
                                            });
                                        },
                                        mouseleave: function () {
                                            layer.closeAll('tips'); // 关闭所有提示
                                        }
                                    }
                                }, {
                                    name: 'warning',
                                    classname: 'btn btn-xs btn-success btn-click',
                                    icon: 'fa fa-user-tie',
                                    title: '班长',
                                    click: function (value, row, index) {
                                        Backend.api.open('/classes/leader?cid=' + row.id + '&ref=addtabs', '班长', {
                                            max: true,
                                            area: ['80%', '80%'],
                                            titl: "班长",
                                            callback: function (data) {
                                                Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "班长" });
                                            }
                                        });
                                    },
                                    on: {
                                        mouseenter: function (e) {
                                            layer.tips('班长', e.currentTarget, {
                                                tips: [1, '#009688'], // 提示框位置和颜色
                                                time: 0 // 不自动关闭
                                            });
                                        },
                                        mouseleave: function () {
                                            layer.closeAll('tips'); // 关闭所有提示
                                        }
                                    }
                                },
                            ]
                        }
                    ]
                ]
            });

            // 初始化主表格的搜索功能
            Controller.api.handleBootstrapTableSearch(table, Config.relType);
            Controller.api.bindCustomSearchInput(table, Config.relType);


            // 饼图初始化函数
            function initPieChart(domId, data) {
                const chart = echarts.init(document.getElementById(domId));
                data.apply_num = data.apply_num === 0 ? (Math.floor(Math.random() * 50) + 1) : data.apply_num;
                const option = {
                    tooltip: { trigger: 'item' },
                    series: [{
                        type: 'pie',
                        color: ['#37BD9D', '#BDBDBD'],
                        radius: ['30%', '90%'],
                        avoidLabelOverlap: false,
                        label: { show: false },
                        data: [
                            { value: data.apply_num, name: '已报名' },
                            { value: data.num, name: '未报名人数' }
                        ]
                    }]
                };
                chart.setOption(option);
            }

            // 移除自动刷新页面的行为
            // $(document).on('fa.event.success', function(event, data) {
            //     setTimeout(function() {
            //         location.reload();
            //     }, 1000);
            //     // 遍历每个班级行
            // });

            // 当添加成功后，更新饼图
            table.on('post-body.bs.table', function (data) {
                var rows = table.bootstrapTable('getData');
                rows.forEach(function (row) {
                    initPieChart(`chart-${row.id}`, row);
                });
            });

            // 绑定状态切换事件（使用事件委托）
            $(document).on('change', '.status-toggle', function (e) {
                e.stopPropagation();
                var $checkbox = $(this);
                var id = $checkbox.data('id');
                var newStatus = $checkbox.is(':checked') ? '1' : '0';
                var oldStatus = $checkbox.data('status');

                // 发送AJAX请求更新状态
                $.ajax({
                    url: 'classes/classes/changestatus',
                    type: 'POST',
                    data: {
                        id: id,
                        status: newStatus
                    },
                    success: function (response) {
                        if (response.code == 1) {
                            Toastr.success(response.msg || '状态更新成功');
                            // 更新data-status属性
                            $checkbox.data('status', newStatus);
                            // 刷新表格
                            table.bootstrapTable('refresh');
                        } else {
                            Toastr.error(response.msg || '状态更新失败');
                            // 恢复原状态
                            $checkbox.prop('checked', oldStatus == '1');
                        }
                    },
                    error: function () {
                        Toastr.error('网络错误，请稍后重试');
                        // 恢复原状态
                        $checkbox.prop('checked', oldStatus == '1');
                    }
                });
            });


            // 切换tab时加载对应数据
            function loadClassTable(relType, classStatus, containerId) {
                // 检查容器是否存在
                if ($('#' + containerId).length === 0) {
                    return;
                }

                // 销毁现有表格
                var tableId = 'table_' + containerId;
                if ($('#' + tableId).length > 0) {
                    $('#' + tableId).bootstrapTable('destroy');
                }

                // 重新创建表格
                $("#" + containerId).html('<table id="' + tableId + '" class="table table-striped table-bordered table-hover"></table>');
                $('#' + tableId).bootstrapTable({
                    url: $.fn.bootstrapTable.defaults.extend.index_url,
                    queryParams: function (params) {
                        params.rel_type = relType;
                        params.class_status = classStatus;
                        params.rel_id = Config.relId;
                        params.classes_type = relType === 1 ? 1 : (relType === 2 ? 2 : 3); // 学校是1，社区是2，校外是3
                        params.table = 'fa_course_table_autoplan_temp';
                        if (relType === 2) {
                            params.group = 'location_id';
                            params.order = 'oc ASC';
                            params.limit = 1;
                        }
                        // 确保搜索参数正确传递
                        if (params.searchText) {
                            params.keyword = params.searchText;
                        }
                        return params;
                    },
                    escape: false,
                    pk: 'id',
                    pageSize: 30,
                    sortName: 'sequence_number', // 默认按序号排序
                    sortOrder: 'desc', // 默认升序
                    search: true, // 启用搜索功能以显示搜索框
                    showSearch: true, // 显示搜索框
                    searchOnEnterKey: false, // 禁用回车键搜索，使用我们的自定义处理
                    showRefresh: true, // 显示刷新按钮
                    showColumns: true, // 显示列选择按钮
                    columns: [
                        [
                            { checkbox: true },
                            { field: 'id', title: '班级ID', operate: '=', searchable: true }, // 支持精确搜索
                            {
                                field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                    // 使用格式化的序号，如果没有则显示空字符串
                                    if (row.formatted_sequence) {
                                        // 根据班级类型添加不同的样式
                                        var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                        return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                    }
                                    return '';
                                }
                            },
                            { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                            { field: 'school_id', title: '学校', operate: 'LIKE', searchable: true },
                            { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                            { field: 'community_id', title: '社区', operate: 'LIKE', searchable: true },
                            { field: 'ocation_id', title: '教学点', operate: 'LIKE', searchable: true },
                            { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                            { field: 'subject_lv', title: '课程类别' },
                            { field: 'num', title: '班级人数' },
                            { field: 'apply_num', title: '报名人数' },
                            { field: 'price', title: '学费' },
                            { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                            { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                            {
                                field: 'imgcode',
                                title: '报名进度',
                                formatter: function (value, row) {
                                    return `<div id="chart-${row.id}" style="width:120px;height:80px"></div>`;
                                }
                            },
                            { field: 'count_total', title: '课节数' },
                            {
                                field: 'status',
                                title: '状态',
                                searchList: { '1': '正常', '0': '关闭' },
                                formatter: function (value, row) {
                                    var checked = value == '1' ? 'checked' : '';
                                    return '<input type="checkbox" class="status-toggle" data-id="' + row.id + '" data-status="' + value + '" ' + checked + ' />';
                                }
                            },
                            {
                                field: 'operate', title: __('Operate'), table: $('#table_' + containerId), events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                                buttons: [
                                    {
                                        name: 'info',
                                        classname: 'btn btn-xs btn-info btn-click',
                                        icon: 'fa fa-user-graduate',
                                        title: '学生',
                                        click: function (value, row, index) {
                                            Backend.api.open('/classes/student?cid=' + row.id + '&ref=addtabs', '学生', {
                                                max: true,
                                                area: ['80%', '80%'],
                                                title: "学生",
                                                callback: function (data) {
                                                    Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "学生" });
                                                }
                                            });
                                        },
                                        on: {
                                            mouseenter: function (e) {
                                                layer.tips('学生', e.currentTarget, {
                                                    tips: [1, '#0BB2D4'],
                                                    time: 0
                                                });
                                            },
                                            mouseleave: function () {
                                                layer.closeAll('tips');
                                            }
                                        }
                                    },
                                    {
                                        name: 'info',
                                        classname: 'btn btn-xs btn-danger btn-click',
                                        icon: 'fa fa-user-graduate',
                                        title: '管理员',
                                        click: function (value, row, index) {
                                            Backend.api.open('/classes/manager?cid=' + row.id + '&ref=addtabs', '管理员', {
                                                max: true,
                                                area: ['80%', '80%'],
                                                title: "管理员",
                                                callback: function (data) {
                                                    Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "管理员" });
                                                }
                                            });
                                        },
                                        on: {
                                            mouseenter: function (e) {
                                                layer.tips('管理员', e.currentTarget, {
                                                    tips: [1, '#FF5722'],
                                                    time: 0
                                                });
                                            },
                                            mouseleave: function () {
                                                layer.closeAll('tips');
                                            }
                                        }
                                    },
                                    {
                                        name: 'warning',
                                        classname: 'btn btn-xs btn-success btn-click',
                                        icon: 'fa fa-user-tie',
                                        title: '班长',
                                        click: function (value, row, index) {
                                            Backend.api.open('/classes/leader?cid=' + row.id + '&ref=addtabs', '班长', {
                                                max: true,
                                                area: ['80%', '80%'],
                                                title: "班长",
                                                callback: function (data) {
                                                    Layer.alert("接收到回传数据：" + JSON.stringify(data), { title: "班长" });
                                                }
                                            });
                                        },
                                        on: {
                                            mouseenter: function (e) {
                                                layer.tips('班长', e.currentTarget, {
                                                    tips: [1, '#67C23A'],
                                                    time: 0
                                                });
                                            },
                                            mouseleave: function () {
                                                layer.closeAll('tips');
                                            }
                                        }
                                    }
                                ]
                            }
                        ]
                    ]
                });

                // 初始化搜索功能
                var dynamicTable = $('#' + tableId);
                Controller.api.handleBootstrapTableSearch(dynamicTable, relType);
                Controller.api.bindCustomSearchInput(dynamicTable, relType);

                // 添加toolbar检查和重新初始化逻辑
                setTimeout(function () {
                    checkAndInitToolbar();
                    // 为动态创建的表格也添加搜索增强功能
                    Controller.api.enhanceSearch($('#' + tableId), relType);
                }, 100); // 延迟100ms确保表格完全加载
            }

            // 新增：检查并初始化toolbar的函数
            function checkAndInitToolbar() {
                // 检查toolbar是否存在且可见
                if ($('#toolbar').length === 0 || $('#toolbar').is(':hidden')) {
                    // 如果toolbar不存在，重新创建
                    if ($('#toolbar').length === 0) {
                        var toolbarHtml = '<div id="toolbar" class="toolbar" style="margin-bottom: 15px; padding: 10px; background-color: #f8f9fa; border-radius: 5px; border: 1px solid #dee2e6;">' +
                            '<a href="javascript:;" class="btn btn-primary btn-refresh" title="刷新" style="margin-right: 8px;"><i class="fa fa-refresh"></i> </a>' +
                            '<a href="javascript:;" class="btn btn-success btn-add" title="添加" style="margin-right: 8px;"><i class="fa fa-plus"></i> 添加</a>' +
                            '<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled" title="编辑" style="margin-right: 8px;"><i class="fa fa-pencil"></i> 编辑</a>' +
                            '<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled" title="删除" style="margin-right: 8px;"><i class="fa fa-trash"></i> 删除</a>' +
                            '</div>';

                        // 查找当前激活的tab-pane中的.bs-bars.pull-left位置
                        var activeTabPane = $('.tab-pane.active');
                        var bsBars = activeTabPane.find('.bs-bars.pull-left');

                        if (bsBars.length > 0) {
                            // 如果找到.bs-bars.pull-left，将toolbar插入其中
                            bsBars.append(toolbarHtml);
                        } else {
                            // 如果没有找到.bs-bars.pull-left，等待表格完全加载后再尝试
                            setTimeout(function () {
                                var bsBarsRetry = activeTabPane.find('.bs-bars.pull-left');
                                if (bsBarsRetry.length > 0) {
                                    bsBarsRetry.append(toolbarHtml);
                                    // 重新绑定toolbar事件
                                    rebindToolbarEvents();
                                } else {
                                    // 如果仍然找不到，则插入到主选项卡之前作为备选方案
                                    $('#mainClassTab').before(toolbarHtml);
                                    // 重新绑定toolbar事件
                                    rebindToolbarEvents();
                                }
                            }, 200);
                            return; // 提前返回，避免重复绑定事件
                        }
                    } else {
                        // 如果toolbar存在但隐藏，显示它并优化样式
                        $('#toolbar').show().css({
                            'padding': '10px',
                            'background-color': '#f8f9fa',
                            'border-radius': '5px',
                            'border': '1px solid #dee2e6',
                            'margin-bottom': '15px'
                        });

                        // 为toolbar内的按钮添加间距
                        $('#toolbar .btn').css('margin-right', '8px');
                    }

                    // 重新绑定toolbar事件
                    rebindToolbarEvents();
                }
            }

            // 新增：重新绑定toolbar事件的函数
            function rebindToolbarEvents() {
                // 重新绑定添加按钮事件
                $(document).off('click', '#toolbar .btn-add').on('click', '#toolbar .btn-add', function (e) {
                    e.preventDefault();
                    var url = 'classes/classes/add';
                    Fast.api.open(url, $(this).data("original-title") || $(this).attr("title") || __('Add'), $(this).data() || {});
                    return false;
                });

                // 重新绑定刷新按钮事件
                $(document).off('click', '#toolbar .btn-refresh').on('click', '#toolbar .btn-refresh', function (e) {
                    e.preventDefault();

                    // 获取当前激活的主选项卡
                    var activeMainTab = $('#mainClassTab li.active a').data('reltype');

                    if (activeMainTab == 1) {
                        // 学校班级逻辑
                        var activeSchoolBtn = $('#school-class-toggle-controller .btn.active');
                        var type = activeSchoolBtn.data('type');
                        var containerId = '';

                        switch (type) {
                            case 'all':
                                containerId = 'schoolAllTableContainer';
                                break;
                            case 'ongoing':
                                containerId = 'schoolOngoingTableContainer';
                                break;
                            case 'ended':
                                containerId = 'schoolEndedTableContainer';
                                break;
                            case 'unscheduled':
                                containerId = 'schoolUnscheduledTableContainer';
                                break;
                        }

                        if ($('#table_' + containerId).length > 0) {
                            $('#table_' + containerId).bootstrapTable('refresh');
                        }
                    } else if (activeMainTab == 2) {
                        // 社区班级逻辑
                        var activeCommunityBtn = $('#community-class-toggle-controller .btn.active');
                        var type = activeCommunityBtn.data('type');
                        var containerId = '';

                        switch (type) {
                            case 'all':
                                containerId = 'communityAllTableContainer';
                                break;
                            case 'ongoing':
                                containerId = 'communityOngoingTableContainer';
                                break;
                            case 'ended':
                                containerId = 'communityEndedTableContainer';
                                break;
                            case 'unscheduled':
                                containerId = 'communityUnscheduledTableContainer';
                                break;
                        }

                        if ($('#table_' + containerId).length > 0) {
                            $('#table_' + containerId).bootstrapTable('refresh');
                        }
                    } else if (activeMainTab == 3) {
                        // 校外班级逻辑
                        var activeExternalBtn = $('#external-class-toggle-controller .btn.active');
                        var type = activeExternalBtn.data('type');
                        var containerId = '';

                        switch (type) {
                            case 'all':
                                containerId = 'externalAllTableContainer';
                                break;
                            case 'ongoing':
                                containerId = 'externalOngoingTableContainer';
                                break;
                            case 'ended':
                                containerId = 'externalEndedTableContainer';
                                break;
                            case 'unscheduled':
                                containerId = 'externalUnscheduledTableContainer';
                                break;
                        }

                        if ($('#table_' + containerId).length > 0) {
                            $('#table_' + containerId).bootstrapTable('refresh');
                        }
                    }

                    return false;
                });

                // 重新绑定编辑和删除按钮事件（如果需要的话）
                if (typeof Table !== 'undefined' && Table.api && Table.api.bindevent) {
                    Table.api.bindevent($('#toolbar'));
                }

            }
            $(function () {
                // 检查用户权限，决定初始加载哪个选项卡
                var userGroupId = Config.admin && Config.admin.group_id ? parseInt(Config.admin.group_id) : null;
                var hasSchoolPermission = (userGroupId === 1 || userGroupId === 3); // 超级管理员或学校管理员

                if (hasSchoolPermission) {
                    // 有学校权限，初始加载学校班级 - 默认选择全部班级
                    loadClassTable(1, 0, 'schoolAllTableContainer');
                    Controller.api.switchToAllClassesTab(1);
                } else {
                    // 没有学校权限，初始加载社区班级 - 默认选择全部班级
                    loadClassTable(2, 0, 'communityAllTableContainer');
                    Controller.api.switchToAllClassesTab(2);
                }

                // 主选项卡切换事件
                $('#mainClassTab a').on('shown.bs.tab', function (e) {
                    var relType = $(this).data('reltype');
                    var userGroupId = Config.admin && Config.admin.group_id ? parseInt(Config.admin.group_id) : null;
                    var hasSchoolPermission = (userGroupId === 1 || userGroupId === 3);

                    if (relType == 1) {
                        // 检查是否有学校权限
                        if (hasSchoolPermission) {
                            // 默认加载全部班级
                            loadClassTable(1, 0, 'schoolAllTableContainer');
                            Controller.api.switchToAllClassesTab(1);
                        } else {
                            // 没有权限，阻止切换并切换到社区选项卡
                            e.preventDefault();
                            $('#mainClassTab a[data-reltype="2"]').tab('show');
                            return false;
                        }
                    } else if (relType == 2) {
                        loadClassTable(2, 0, 'communityAllTableContainer');
                        Controller.api.switchToAllClassesTab(2);
                        $("#communityTab").show();
                    } else if (relType == 3) {
                        // 校外班级，数据先取社区的
                        loadClassTable(2, 0, 'externalAllTableContainer');
                        Controller.api.switchToAllClassesTab(3);
                        $("#communityTab").hide();
                    }
                });

                // 学校班级切换按钮事件
                $(document).on('click', '#school-class-toggle-controller .btn', function () {
                    // 检查权限
                    var userGroupId = Config.admin && Config.admin.group_id ? parseInt(Config.admin.group_id) : null;
                    var hasSchoolPermission = (userGroupId === 1 || userGroupId === 3);

                    if (!hasSchoolPermission) {
                        return false;
                    }

                    var classStatus = $(this).data('classstatus');
                    var type = $(this).data('type');
                    var containerId = '';
                    var tabId = '';

                    // 根据类型确定容器ID和tab ID
                    switch (type) {
                        case 'all':
                            containerId = 'schoolAllTableContainer';
                            tabId = 'schoolAll';
                            break;
                        case 'ongoing':
                            containerId = 'schoolOngoingTableContainer';
                            tabId = 'schoolOngoing';
                            break;
                        case 'ended':
                            containerId = 'schoolEndedTableContainer';
                            tabId = 'schoolEnded';
                            break;
                        case 'unscheduled':
                            containerId = 'schoolUnscheduledTableContainer';
                            tabId = 'schoolUnscheduled';
                            break;
                    }

                    // 更新按钮状态
                    $('#school-class-toggle-controller .btn').removeClass('btn-primary active').addClass('btn-outline-secondary');
                    $(this).removeClass('btn-outline-secondary').addClass('btn-primary active');

                    // 显示/隐藏对应的tab-pane
                    $('#schoolAll, #schoolOngoing, #schoolEnded, #schoolUnscheduled').removeClass('active in');
                    $('#' + tabId).addClass('active in');

                    // 加载对应数据
                    loadClassTable(1, classStatus, containerId);
                });

                // 社区班级切换按钮事件
                $(document).on('click', '#community-class-toggle-controller .btn', function () {
                    var classStatus = $(this).data('classstatus');
                    var type = $(this).data('type');
                    var containerId = '';
                    var tabId = '';

                    // 根据类型确定容器ID和tab ID
                    switch (type) {
                        case 'all':
                            containerId = 'communityAllTableContainer';
                            tabId = 'communityAll';
                            break;
                        case 'ongoing':
                            containerId = 'communityOngoingTableContainer';
                            tabId = 'communityOngoing';
                            break;
                        case 'ended':
                            containerId = 'communityEndedTableContainer';
                            tabId = 'communityEnded';
                            break;
                        case 'unscheduled':
                            containerId = 'communityUnscheduledTableContainer';
                            tabId = 'communityUnscheduled';
                            break;
                    }

                    // 更新按钮状态
                    $('#community-class-toggle-controller .btn').removeClass('btn-primary active').addClass('btn-outline-secondary');
                    $(this).removeClass('btn-outline-secondary').addClass('btn-primary active');

                    // 显示/隐藏对应的tab-pane
                    $('#communityAll, #communityOngoing, #communityEnded, #communityUnscheduled').removeClass('active in');
                    $('#' + tabId).addClass('active in');

                    // 加载对应数据
                    loadClassTable(2, classStatus, containerId);
                });

                // 校外班级切换按钮事件
                $(document).on('click', '#external-class-toggle-controller .btn', function () {
                    var classStatus = $(this).data('classstatus');
                    var type = $(this).data('type');
                    var containerId = '';
                    var tabId = '';

                    // 根据类型确定容器ID和tab ID
                    switch (type) {
                        case 'all':
                            containerId = 'externalAllTableContainer';
                            tabId = 'externalAll';
                            break;
                        case 'ongoing':
                            containerId = 'externalOngoingTableContainer';
                            tabId = 'externalOngoing';
                            break;
                        case 'ended':
                            containerId = 'externalEndedTableContainer';
                            tabId = 'externalEnded';
                            break;
                        case 'unscheduled':
                            containerId = 'externalUnscheduledTableContainer';
                            tabId = 'externalUnscheduled';
                            break;
                    }

                    // 更新按钮状态
                    $('#external-class-toggle-controller .btn').removeClass('btn-primary active').addClass('btn-outline-secondary');
                    $(this).removeClass('btn-outline-secondary').addClass('btn-primary active');

                    // 显示/隐藏对应的tab-pane
                    $('#externalAll, #externalOngoing, #externalEnded, #externalUnscheduled').removeClass('active in');
                    $('#' + tabId).addClass('active in');

                    // 加载对应数据（数据先取社区的）
                    loadClassTable(2, classStatus, containerId);
                });
            });
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/index.js';
            document.head.appendChild(script);

            // 为表格绑定事件
            Table.api.bindevent(table);

            // 增强搜索功能：根据班级类型支持不同的搜索策略
            Controller.api.enhanceSearch(table, Config.relType);

            // 绑定工具栏添加按钮事件已在 rebindToolbarEvents() 中处理，这里不需要重复绑定

            // 绑定工具栏刷新按钮事件已在 rebindToolbarEvents() 中处理，这里不需要重复绑定
            // 重复的刷新按钮绑定代码已删除

            // 调用rebindToolbarEvents函数来重新绑定工具栏事件
            rebindToolbarEvents();
        },
        add: function () {
            if (typeof Vue === 'undefined') {
                return;
            }
            Vue.component('manager-box', ManagerBox);
            Vue.component('leader-box', LeaderBox);
            new Vue({
                el: '#app',
                components: {
                },
                data: {
                    leftOptions: Config.leftOptions || [],
                    rightOptions: Config.rightOptions || []
                }
            });
            $(document).ready(function () {

                // 获取当前年份和月份
                var currentYear = new Date().getFullYear();
                var currentMonth = new Date().getMonth() + 1; // getMonth() 返回0-11，所以加1得到1-12

                // 定义一个函数来确定当前的季节
                function getCurrentSeason(month) {
                    if (month >= 3 && month <= 5) return "春季";
                    if (month >= 6 && month <= 8) return "夏季";
                    if (month >= 9 && month <= 11) return "秋季";
                    return "冬季"; // 12, 1, 2月
                }

                // 检查#c-nianji元素是否存在
                var $nianjiElement = $('#c-nianji');
                if ($nianjiElement.length) { // 如果元素存在
                    // 检查#c-nianji的值是否为空
                    if ($nianjiElement.val().trim() === '') {
                        // 设置为当前年份+"级"
                        $nianjiElement.val(currentYear + '级');
                    }
                } else {
                }

                // 检查#c-xueqi元素是否存在
                var $xueqiElement = $('#c-xueqi');
                if ($xueqiElement.length) { // 如果元素存在
                    // 检查#c-xueqi的值是否为空
                    if ($xueqiElement.val().trim() === '') {
                        // 设置为当前季节
                        var season = getCurrentSeason(currentMonth);
                        $xueqiElement.val(season);
                    }
                } else {
                }

                $(document).on('click dblclick', '#c-name', function (e) {
                    var nianji = $("#c-nianji").val();
                    var xueyuan = "";
                    if (!/请/.test($("#c-school_id_tree option:selected").text())) {
                        xueyuan = $("#c-school_id_tree option:selected").text().replace(/\s|&nbsp;|├|└/g, '');
                    }
                    var xueqi = $("#c-xueqi").val();
                    var qishu = $("#c-qishu").val();
                    var subject = "";
                    if (!/请/.test($("#c-subject_lv option:selected").text())) {
                        subject = $("#c-subject_lv option:selected").text().replace(/\s|&nbsp;|├|└/g, '');
                    }
                    if (e.type == "click" && $("#c-name").val() == "") {
                        $("#c-name").val(nianji + xueyuan + xueqi + subject + "第" + qishu + "期" + "1班");
                    } else if (e.type == "dblclick") {
                        $("#c-name").val(nianji + xueyuan + xueqi + subject + "第" + qishu + "期" + "1班");
                    }
                    $("#c-name").val($("#c-name").val().replace(/第期/g, ''));
                });

                // c-subject_lv change事件处理
                $(document).on('change', '#c-subject_lv', function () {
                    var selectedValue = $(this).val();
                    var selectedText = $(this).find('option:selected').text();



                    // 这里可以添加具体的处理逻辑
                    // 例如：根据选择的课程类别更新其他相关字段
                });
            });
            // 检查是否已经加载了add.js，避免重复加载
            if (!window.addJsLoaded) {
                var script = document.createElement('script');
                script.src = '/assets/js/backend/common/add.js';
                script.onload = function () {
                    window.addJsLoaded = true;
                };
                document.head.appendChild(script);
            }


            // 初始化AI助手
            AiHelper.init({
                baseUrl: '/ysapi/v1/AiHelper/'
            });

            // 指定教室选项卡点击事件（add模式）
            // 指定教室选项卡点击事件（add模式）
            $(document).on('click', 'a[href="#tabs_6"]', function () {
                // add模式下只显示提示信息，不需要特殊处理
                // 页面已经包含了相应的提示内容
            });

            // 学员管理选项卡事件处理
            // 当学员管理选项卡被激活时，加载学员管理表格
            $(document).on('shown.bs.tab', 'a[href="#tabs_3"]', function (e) {
                // 确保只有在学员管理选项卡激活时才执行，避免其他选项卡误触发
                if ($(e.target).attr('href') !== '#tabs_3') {
                    return;
                }

                var $studentManagerContainer = $('#student-manager-content');
                if (!$studentManagerContainer.hasClass('loaded')) {

                    // 获取当前班级ID
                    var classId = $('#c-id').val() || window.currentClassId;
                    var requestUrl = '/user/studentmanager/index';

                    // 构建请求参数
                    var params = {
                        'force_html': '1'
                    };

                    if (classId) {
                        params['class_id'] = classId;
                    }

                    // 构建完整的请求URL
                    var queryString = $.param(params);
                    requestUrl += '?' + queryString;

                    // 使用AJAX加载user/student_manager模块的index表格
                    $.get(requestUrl)
                        .done(function (data) {
                            try {
                                // 提取表格内容并插入到容器中
                                var tableContent = $(data).find('.panel-body').html();
                                if (tableContent) {
                                    $studentManagerContainer.html(tableContent);
                                } else {
                                    // 如果没有找到表格内容，直接加载整个页面内容
                                    $studentManagerContainer.html(data);
                                }
                                $studentManagerContainer.addClass('loaded');

                                // 重新初始化表格组件
                                if (typeof Table !== 'undefined') {
                                    Table.api.init();
                                }

                                // 重新初始化其他可能的组件
                                if (typeof Form !== 'undefined') {
                                    Form.api.bindevent();
                                }
                            } catch (error) {
                                $studentManagerContainer.html('<div class="alert alert-warning">加载学员管理内容出错，请稍后重试。</div>');
                            }
                        })
                        .fail(function (xhr, status, error) {
                            var errorMsg = '加载学员管理表格失败';
                            if (xhr.status === 500) {
                                errorMsg += '：服务器内部错误，请检查班级参数是否正确。';
                            } else if (xhr.status === 404) {
                                errorMsg += '：页面未找到。';
                            } else {
                                errorMsg += '，请稍后重试。';
                            }

                            $studentManagerContainer.html('<div class="alert alert-danger">' + errorMsg + '</div>');
                        });
                }
            });

            // 初始化轮播图片管理（添加安全检查）
            try {
                Controller.api.initImageGroups('add');
            } catch (e) {
            }

            // 绑定轮播图管理按钮事件（为添加模式）
            $(document).ready(function () {
                $(document).off('click', '#manage-class-slider-btn').on('click', '#manage-class-slider-btn', function (e) {
                    e.preventDefault();
                    e.stopPropagation();

                    // 在添加模式下，由于还没有班级ID，提示用户先保存班级
                    if (typeof layer !== 'undefined') {
                        layer.msg('请先保存班级信息，然后再设置轮播图1', { icon: 0, time: 3000 });
                    } else if (typeof Toastr !== 'undefined') {
                        Toastr.info('请先保存班级信息，然后再设置轮播图2');
                    } else {
                        alert('请先保存班级信息，然后再设置轮播图3');
                    }

                    return false;
                });
            });

            Controller.api.bindevent();
        },
        edit: function () {
            if (typeof Vue === 'undefined') {
                return;
            }

            // 检查是否已经加载了add.js，避免重复加载
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/add.js';
            script.onload = function () {
                window.addJsLoaded = true;
            };
            document.head.appendChild(script);


            //Vue.component('manager-box', ManagerBox);
            Vue.component('leader_box', LeaderBox);
            new Vue({
                el: '#app',
                components: {
                },
                data: {
                    leftOptions: Config.leftOptions || [],
                    rightOptions: Config.rightOptions || []
                }
            });
            $(document).ready(function () {
                // 获取当前年份和月份
                var currentYear = new Date().getFullYear();
                var currentMonth = new Date().getMonth() + 1; // getMonth() 返回0-11，所以加1得到1-12

                // 定义一个函数来确定当前的季节
                function getCurrentSeason(month) {
                    if (month >= 3 && month <= 5) return "春季";
                    if (month >= 6 && month <= 8) return "夏季";
                    if (month >= 9 && month <= 11) return "秋季";
                    return "冬季"; // 12, 1, 2月
                }

                // 检查#c-nianji元素是否存在
                var $nianjiElement = $('#c-nianji');
                if ($nianjiElement.length) { // 如果元素存在
                    // 检查#c-nianji的值是否为空
                    if ($nianjiElement.val().trim() === '') {
                        // 设置为当前年份+"级"
                        $nianjiElement.val(currentYear + '级');
                    }
                } else {
                }

                // 检查#c-xueqi元素是否存在
                var $xueqiElement = $('#c-xueqi');
                if ($xueqiElement.length) { // 如果元素存在
                    // 检查#c-xueqi的值是否为空
                    if ($xueqiElement.val().trim() === '') {
                        // 设置为当前季节
                        var season = getCurrentSeason(currentMonth);
                        $xueqiElement.val(season);
                    }
                } else {
                }

                $(document).on('click dblclick', '#c-name', function (e) {
                    var nianji = $("#c-nianji").val();
                    var xueyuan = "";
                    if (!/请/.test($("#c-school_id_tree option:selected").text())) {
                        xueyuan = $("#c-school_id_tree option:selected").text().replace(/\s|&nbsp;|├|└/g, '');
                    }
                    var xueqi = $("#c-xueqi").val();
                    var qishu = $("#c-qishu").val();
                    var subject = "";
                    if (!/请/.test($("#c-subject_lv option:selected").text())) {
                        subject = $("#c-subject_lv option:selected").text().replace(/\s|&nbsp;|├|└/g, '');
                    }
                    if (e.type == "click" && $("#c-name").val() == "") {
                        $("#c-name").val(nianji + xueyuan + xueqi + subject + "第" + qishu + "期" + "1班");
                    } else if (e.type == "dblclick") {
                        $("#c-name").val(nianji + xueyuan + xueqi + subject + "第" + qishu + "期" + "1班");
                    }
                    $("#c-name").val($("#c-name").val().replace(/第期/g, ''));
                });
            });
            var row = JSON.parse($('#row').val());



            // 初始化AI助手
            AiHelper.init({
                baseUrl: 'ai/ai/'
            });

            // 绑定班级介绍AI生成按钮事件
            $(document).on('click', '.ai-generate-intro', function () {

                var $button = $(this);
                var inputId = $button.data('input-id');
                var type = $button.data('type');
                var $textarea = $('#' + inputId);

                if (!$textarea.length) {
                    Toastr.error('未找到目标输入框');
                    return;
                }

                // 显示加载状态
                $button.prop('disabled', true);
                $button.html('<i class="fa fa-spinner fa-spin"></i> AI生成中...');

                // 收集表单数据
                var formData = Controller.api.collectFormData();

                // 获取教学点ID
                var ocationId = formData.ocation_id;

                if (!ocationId) {
                    Toastr.error('未找到教学点信息');
                    $button.prop('disabled', false);
                    var buttonText = type === 'course_intro' ? 'AI智能生成课程介绍' : 'AI智能生成班级介绍';
                    $button.html('<i class="fa fa-magic"></i> ' + buttonText);
                    return;
                }

                // 先获取或生成教学点介绍
                $.ajax({
                    url: '/ysapi/v1/AiHelper/getOrGenerateOcationIntro',
                    type: 'POST',
                    data: {
                        ocation_id: ocationId
                    },
                    dataType: 'json',
                    success: function (ocationResponse) {
                        if (ocationResponse.code === 1) {
                            // 获取教学点介绍成功，生成班级介绍提示词

                            var prompt;
                            var generateType;
                            var successMsg;

                            // 根据类型生成不同的提示词
                            if (type === 'course_intro') {
                                prompt = Controller.api.buildCourseIntroPrompt(formData, ocationResponse.data.content);
                                generateType = 'course_intro';
                                successMsg = '课程介绍生成成功！';
                            } else {
                                prompt = Controller.api.buildClassIntroPrompt(formData, ocationResponse.data.content);
                                generateType = 'class_intro';
                                successMsg = '班级介绍生成成功！';
                            }

                            prompt = prompt + "ocation_id:" + ocationId + "\n\n";

                            // 调用AI生成介绍
                            $.ajax({
                                url: '/ysapi/v1/AiHelper/generateText',
                                type: 'POST',
                                data: {
                                    prompt: prompt,
                                    type: generateType,
                                    max_tokens: 3000,
                                    temperature: 0.7
                                },
                                dataType: 'json',
                                success: function (response) {
                                    if (response.code === 1 && response.data && response.data.content) {
                                        // 写入编辑器内容
                                        var content = response.data.content.replace(/\\n/g, '\n');

                                        // 彻底清理连续的<br>标签的函数
                                        function cleanConsecutiveBr(text) {
                                            // 先统一换行符
                                            text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');

                                            // 多次处理，确保彻底清理
                                            var prevText = '';
                                            var iterations = 0;
                                            while (prevText !== text && iterations < 10) {
                                                prevText = text;

                                                // 处理各种形式的连续<br>
                                                text = text.replace(/(<br\s*\/?\s*>\s*){2,}/gi, '<br>');
                                                text = text.replace(/<br\s*\/?\s*>\s*\n\s*<br\s*\/?\s*>/gi, '<br>');
                                                text = text.replace(/<br\s*\/?\s*>(\s|\n)*<br\s*\/?\s*>/gi, '<br>');
                                                text = text.replace(/(<br\s*\/?\s*>[\s\n]*){2,}/gi, '<br>');

                                                iterations++;
                                            }

                                            return text;
                                        }

                                        // 应用清理函数
                                        content = cleanConsecutiveBr(content);
                                        content = content.replace(/^教学点ID[\s|\S]*$/gi, '');
                                        content = content.replace(/^```[\s|\S]*$/gi, '');
                                        // 处理</p><p>之间多余的空白
                                        content = content.replace(/<\/p>\s+<p([^>]*)>/gi, '</p><p$1>');

                                        // 处理连续的<br><p>组合，简化为单个<p>
                                        content = content.replace(/(<br\s*\/?\s*>\s*)+<p([^>]*)>/gi, '<p$2>');

                                        // 处理</p><br><p>组合，简化为</p><p>
                                        content = content.replace(/<\/p>\s*(<br\s*\/?\s*>\s*)+<p([^>]*)>/gi, '</p><p$2>');

                                        // 移除空的<p>标签（包含空白字符和&nbsp;）
                                        content = content.replace(/<p[^>]*>[\s\r\n]*(&nbsp;[\s\r\n]*)*<\/p>/gi, '');

                                        // 最后再次应用清理函数
                                        content = cleanConsecutiveBr(content);

                                        response.data.content = content;
                                        Controller.api.setEditorContent($textarea, response.data.content);
                                        if (ocationResponse.data.generated) {
                                            successMsg += '（已同时生成教学点介绍）';
                                        }
                                        Toastr.success(successMsg);
                                    } else {
                                        Toastr.error('AI生成失败：' + (response.msg || '未知错误'));
                                    }

                                    // 恢复按钮状态
                                    $button.prop('disabled', false);
                                    var buttonText = type === 'course_intro' ? 'AI智能生成课程介绍' : 'AI智能生成班级介绍';
                                    $button.html('<i class="fa fa-magic"></i> ' + buttonText);
                                },
                                error: function (xhr, status, error) {
                                    Toastr.error('AI生成失败：' + error);

                                    // 恢复按钮状态
                                    $button.prop('disabled', false);
                                    var buttonText = type === 'course_intro' ? 'AI智能生成课程介绍' : 'AI智能生成班级介绍';
                                    $button.html('<i class="fa fa-magic"></i> ' + buttonText);
                                }
                            });
                        } else {
                            Toastr.error('获取教学点介绍失败：' + ocationResponse.msg);
                            $button.prop('disabled', false);
                            var buttonText = type === 'course_intro' ? 'AI智能生成课程介绍' : 'AI智能生成班级介绍';
                            $button.html('<i class="fa fa-magic"></i> ' + buttonText);
                        }
                    },
                    error: function (xhr, status, error) {
                        Toastr.error('获取教学点介绍失败：' + error);
                        $button.prop('disabled', false);
                        var buttonText = type === 'course_intro' ? 'AI智能生成课程介绍' : 'AI智能生成班级介绍';
                        $button.html('<i class="fa fa-magic"></i> ' + buttonText);
                    }
                });
            });

            // 初始化轮播图片管理
            $(document).ready(function () {
                Controller.api.initImageGroups('edit');
            });

            // 绑定轮播图管理按钮事件
            $(document).on('click', '#manage-class-slider-btn', function () {
                var classId = Fast.api.query('ids');
                if (!classId) {
                    layer.msg('无法获取班级ID', { icon: 2 });
                    return;
                }

                // 打开轮播图管理弹窗，参考ocation模块的实现
                Fast.api.open('slider/slider/add?classes_id=' + classId + '&position_desc=班级首页轮播图', '轮播图设置', {
                    area: ['90%', '90%'],
                    callback: function (data) {
                        // 轮播图设置完成后的回调
                        Controller.api.updateCarouselPreview();
                    }
                });
            });

            // 处理学员管理选项卡激活事件
            $('a[href="#tabs_3"]').on('shown.bs.tab', function (e) {
                // 检查是否已经加载过内容

                if (!$('#student-manager-content').data('loaded')) {
                    // 获取当前班级ID
                    var classId = Fast.api.query('ids');
                    if (!classId) {
                        $('#student-manager-content').html('<div class="alert alert-warning">无法获取班级ID，请刷新页面重试。</div>');
                        return;
                    }

                    // 通过AJAX加载学员管理表格
                    $.ajax({
                        url: '/user/studentmanager/index?class_id=' + classId,
                        type: 'GET',
                        success: function (response) {
                            var tableContent = '';

                            // 检查响应类型
                            if (typeof response === 'object' && response.rows && Array.isArray(response.rows)) {
                                // 处理JSON格式的响应 {total: 28, rows: Array(28)}
                                // 构建HTML表格
                                tableContent = '<div class="panel panel-default">';
                                tableContent += '<div class="panel-heading">学员管理 <span class="badge">' + response.total + '</span></div>';
                                tableContent += '<div class="panel-body">';

                                // 添加工具条
                                tableContent += '<div class="row" style="margin-bottom: 10px;">';
                                tableContent += '<div class="col-xs-12">';
                                tableContent += '<div class="btn-group" role="group">';
                                tableContent += '<button type="button" class="btn btn-success btn-refresh" title="刷新"><i class="fa fa-refresh"></i> 刷新</button>';
                                tableContent += '</div>';
                                tableContent += '</div>';
                                tableContent += '</div>';

                                if (response.rows.length > 0) {
                                    // 添加表格样式
                                    tableContent += '<style>';
                                    tableContent += '#student-table td, #student-table th { vertical-align: middle !important; line-height: 1.5; padding: 12px 8px; }';
                                    tableContent += '#student-table tbody tr { height: 50px; }';
                                    tableContent += '#student-table .btn { margin: 2px; }';
                                    tableContent += '</style>';
                                    tableContent += '<div class="table-responsive">';
                                    tableContent += '<table class="table table-striped table-bordered table-hover" id="student-table" style="width: 100%;">';
                                    // 构建表头
                                    tableContent += '<thead>';
                                    tableContent += '<tr>';
                                    tableContent += '<th><input type="checkbox" class="check-all" title="全选/取消全选"></th>';
                                    tableContent += '<th>用户名</th>';
                                    tableContent += '<th>昵称</th>';
                                    tableContent += '<th>手机号</th>';
                                    tableContent += '<th>教学点</th>';
                                    tableContent += '<th>用户组</th>';
                                    tableContent += '<th>注册时间</th>';
                                    // 新增表头
                                    tableContent += '<th>学费</th>';
                                    tableContent += '<th>是否已缴</th>';
                                    tableContent += '<th>缴费时间</th>';
                                    tableContent += '<th>操作</th>';
                                    tableContent += '</tr>';
                                    tableContent += '</thead>';
                                    tableContent += '<tbody>';

                                    // 遍历学员数据
                                    $.each(response.rows, function (index, student) {
                                        tableContent += '<tr>';
                                        tableContent += '<td><input type="checkbox" class="check-item" value="' + student.id + '"></td>';
                                        tableContent += '<td>' + (student.username || '') + '</td>';
                                        tableContent += '<td>' + (student.nickname || '') + '</td>';
                                        tableContent += '<td>' + (student.mobile || '') + '</td>';
                                        tableContent += '<td>' + (student.ocation_name || '') + '</td>';
                                        tableContent += '<td>' + (student.group_name || '') + '</td>';
                                        tableContent += '<td>' + (student.createtime ? (isNaN(student.createtime) ? Moment(student.createtime).format('YYYY-MM-DD HH:mm:ss') : Moment(parseInt(student.createtime) * 1000).format('YYYY-MM-DD HH:mm:ss')) : '') + '</td>';

                                        // 假设 student 包含订单信息
                                        const order = student.order || {};
                                        const tuitionFee = order.amount || ''; // 学费
                                        const isPaid = order.pay_status === 1 ? '是' : '否'; // 是否已缴
                                        const payTime = order.pay_time ? Moment(parseInt(order.pay_time) * 1000).format('YYYY-MM-DD HH:mm:ss') : ''; // 缴费时间

                                        // 新增数据行
                                        tableContent += '<td>' + tuitionFee + '</td>';
                                        tableContent += '<td>' + isPaid + '</td>';
                                        tableContent += '<td>' + payTime + '</td>';

                                        tableContent += '<td>';
                                        tableContent += '<a href="javascript:;" class="btn btn-xs btn-primary btn-attendance" data-id="' + student.id + '" title="考勤统计"><i class="fa fa-calendar-check-o"></i> 考勤统计</a> ';
                                        tableContent += '<a href="javascript:;" class="btn btn-xs btn-success btn-payment" data-id="' + student.id + '" title="扫码缴费"><i class="fa fa-qrcode"></i> 扫码缴费</a>';
                                        tableContent += '</td>';
                                        tableContent += '</tr>';
                                    });

                                    tableContent += '</tbody>';
                                    tableContent += '</table>';
                                    tableContent += '</div>';

                                    // 添加分页组件
                                    var totalPages = Math.ceil(response.total / 10); // 假设每页10条
                                    var currentPage = 1;

                                    tableContent += '<div class="row">';
                                    tableContent += '<div class="col-sm-5">';
                                    tableContent += '<div class="dataTables_info">显示第 1 到 ' + Math.min(10, response.total) + ' 条记录，共 ' + response.total + ' 条记录</div>';
                                    tableContent += '</div>';
                                    tableContent += '<div class="col-sm-7 text-right">';
                                    tableContent += '<div class="dataTables_paginate paging_simple_numbers" style="text-align: right;">';
                                    tableContent += '<ul class="pagination">';

                                    // 上一页
                                    tableContent += '<li class="paginate_button previous ' + (currentPage === 1 ? 'disabled' : '') + '">';
                                    tableContent += '<a href="javascript:;" data-page="' + (currentPage - 1) + '">上一页</a>';
                                    tableContent += '</li>';

                                    // 页码
                                    for (var i = 1; i <= Math.min(totalPages, 5); i++) {
                                        tableContent += '<li class="paginate_button ' + (i === currentPage ? 'active' : '') + '">';
                                        tableContent += '<a href="javascript:;" data-page="' + i + '">' + i + '</a>';
                                        tableContent += '</li>';
                                    }

                                    // 下一页
                                    tableContent += '<li class="paginate_button next ' + (currentPage === totalPages ? 'disabled' : '') + '">';
                                    tableContent += '<a href="javascript:;" data-page="' + (currentPage + 1) + '">下一页</a>';
                                    tableContent += '</li>';

                                    tableContent += '</ul>';
                                    tableContent += '</div>';
                                    tableContent += '</div>';
                                    tableContent += '</div>';
                                } else {
                                    tableContent += '<div class="alert alert-info">该班级暂无学员。</div>';
                                }

                                tableContent += '</div>';
                                tableContent += '</div>';
                            } else if (typeof response === 'string') {
                                // 处理HTML格式的响应
                                var $response = $(response);
                                if ($response.find('.panel-body').length > 0) {
                                    tableContent = $response.find('.panel-body').html();
                                } else if ($response.find('.panel').length > 0) {
                                    tableContent = $response.find('.panel').html();
                                } else {
                                    tableContent = response;
                                }
                            }

                            if (tableContent && tableContent.trim() !== '') {
                                $('#student-manager-content').html(tableContent);
                                $('#student-manager-content').data('loaded', true);

                                // 绑定工具条和表格事件
                                Controller.api.bindStudentTableEvents();

                                // 重新初始化表格组件
                                if (typeof Table !== 'undefined' && Table.api && Table.api.init) {
                                    Table.api.init();
                                }

                                // 重新绑定表单事件
                                if (typeof Form !== 'undefined') {
                                    Form.api.bindevent();
                                }
                            } else {
                                $('#student-manager-content').html('<div class="alert alert-warning">未找到学员管理内容。</div>');
                            }
                        }
                    }).fail(function () {
                        $('#student-manager-content').html('<div class="alert alert-danger">加载学员管理表格失败，请稍后重试。</div>');
                    });
                }
            });
            var script = document.createElement('script');
            script.src = '/assets/js/backend/common/index.js';
            document.head.appendChild(script);

            // 初始化轮播图预览
            setTimeout(function () {
                Controller.api.updateCarouselPreview();
            }, 1000);

            // 初始化轮播图片管理（编辑模式）
            try {
                Controller.api.initImageGroups('edit');
            } catch (e) {
            }

            // 课程表选项卡点击事件
            $(document).on('click', 'a[href="#tabs_5"]', function () {
                var iframe = $('#coursetable-iframe');
                var loading = $('#iframe-loading');

                // 构建iframe URL
                var classId = 'new'; // add模式下使用'new'
                var iframeUrl = '/coursetable/classplant/edit?classes_id=' + $("#c-id").val() + '&relType=1&table_id=' + $("#c-table_id", window.parent.document).val();

                iframe.attr('src', iframeUrl);

                iframe.on('load', function () {
                    loading.hide();
                    iframe.show();
                    // 调整iframe高度
                    if (typeof window.adjustIframeHeight === 'function') {
                        window.adjustIframeHeight(this);
                    }
                });

            });

            // 指定教室选项卡点击事件
            // 指定教室选项卡点击事件
            $(document).on('click', 'a[href="#tabs_6"]', function () {
                var classId = $("#c-id").val();

                // 检查classId是否有效
                if (!classId || classId === '' || classId === '0') {
                    showDefaultClassroomPlanContent();
                    return;
                }

                // 显示加载状态
                $('#classroomeplan-default').hide();
                $('#classroomeplan-iframe-container').hide();
                $('#classroomeplan-loading').show();

                // 调用接口检查是否有指定教室记录
                $.ajax({
                    url: '/coursetable/classroomeplan/checkRecord',
                    type: 'GET',
                    data: {
                        classes_id: classId
                    },
                    success: function (response) {
                        // 隐藏加载状态
                        $('#classroomeplan-loading').hide();

                        // 解析响应数据
                        var result = typeof response === 'string' ? JSON.parse(response) : response;

                        if (result.code === 1 && result.data && result.data.hasRecord) {
                            // 有记录，直接进入管理界面
                            showClassroomPlanManagement(true);
                        } else {
                            // 没有记录，显示默认内容
                            showDefaultClassroomPlanContent();
                        }
                    },
                    error: function (xhr, status, error) {
                        // 出错时显示默认内容
                        $('#classroomeplan-loading').hide();
                        showDefaultClassroomPlanContent();
                    }
                });
            });

            // 显示有记录时的管理界面状态
            function showClassroomPlanManagement(hasRecord) {
                if (hasRecord) {
                    $('#classroomeplan-status').html(
                        '<div class="alert alert-success">' +
                        '<i class="fa fa-check-circle"></i> ' +
                        '<strong>已设置指定教室</strong>' +
                        '<p style="margin-top: 10px;">该班级已设置指定教室和时间安排。</p>' +
                        '</div>'
                    );
                    $('#manage-classroomeplan-btn').html('<i class="fa fa-edit"></i> 编辑指定教室');
                } else {
                    $('#classroomeplan-status').html(
                        '<div class="alert alert-warning">' +
                        '<i class="fa fa-exclamation-triangle"></i> ' +
                        '<strong>当前没有指定教室</strong>' +
                        '<p style="margin-top: 10px;">该班级尚未设置指定教室和时间安排。</p>' +
                        '</div>'
                    );
                    $('#manage-classroomeplan-btn').html('<i class="fa fa-plus"></i> 管理指定教室');
                }

                $('#classroomeplan-default').show();
                $('#classroomeplan-iframe-container').hide();
                $('#classroomeplan-loading').hide();

                // 如果有记录，自动触发管理按钮
                if (hasRecord) {
                    setTimeout(function () {
                        $('#manage-classroomeplan-btn').trigger('click');
                    }, 100);
                }
            }

            // 显示默认内容（没有记录时）
            function showDefaultClassroomPlanContent() {
                $('#classroomeplan-status').html(
                    '<div class="alert alert-warning">' +
                    '<i class="fa fa-exclamation-triangle"></i> ' +
                    '<strong>当前没有指定教室</strong>' +
                    '<p style="margin-top: 10px;">该班级尚未设置指定教室和时间安排。</p>' +
                    '</div>'
                );
                $('#manage-classroomeplan-btn').html('<i class="fa fa-plus"></i> 管理指定教室');
                $('#classroomeplan-default').show();
                $('#classroomeplan-iframe-container').hide();
                $('#classroomeplan-loading').hide();
            }

            // 管理指定教室按钮点击事件
            $(document).on('click', '#manage-classroomeplan-btn', function () {
                var classId = $("#c-id").val();
                if (!classId) {
                    if (typeof layer !== 'undefined') {
                        layer.msg('请先保存班级信息', { icon: 2 });
                    } else {
                        alert('请先保存班级信息');
                    }
                    return;
                }

                var iframe = $('#classroomeplan-iframe');
                var loading = $('#classroomeplan-loading');
                var defaultView = $('#classroomeplan-default');
                var iframeContainer = $('#classroomeplan-iframe-container');

                // 显示加载状态
                defaultView.hide();
                loading.show();

                // 构建iframe URL
                var iframeUrl = '/coursetable/classroomeplan/edit/planids/' + classId + "/?classesName=" + encodeURIComponent($("#c-name").val());
                iframe.attr('src', iframeUrl);

                iframe.on('load', function () {
                    loading.hide();
                    iframeContainer.show();
                    // 调整iframe高度
                    if (typeof window.adjustIframeHeight === 'function') {
                        window.adjustIframeHeight(this);
                    }
                });
            });

            // 返回按钮点击事件
            $(document).on('click', '#back-to-classroomeplan-default', function () {
                $('#classroomeplan-iframe-container').hide();
                $('#classroomeplan-default').show();
                // 清空iframe src以停止加载
                $('#classroomeplan-iframe').attr('src', '');
            });

            // 检查是否已经加载了add.js，避免重复加载
            if (!window.addJsLoaded) {
                var script = document.createElement('script');
                script.src = '/assets/js/backend/common/add.js';
                script.onload = function () {
                    window.addJsLoaded = true;
                };
                document.head.appendChild(script);
            }

            // 初始化指定教室状态显示
            function initClassroomPlanStatus() {
                var classId = $("#c-id").val();

                // 检查classId是否有效
                if (!classId || classId === '' || classId === '0') {
                    showDefaultClassroomPlanContent();
                    return;
                }

                // 调用接口检查是否有指定教室记录
                $.ajax({
                    url: '/coursetable/classroomeplan/checkRecord',
                    type: 'GET',
                    data: {
                        classes_id: classId
                    },
                    success: function (response) {
                        // 解析响应数据
                        var result = typeof response === 'string' ? JSON.parse(response) : response;

                        if (result.code === 1 && result.data && result.data.hasRecord) {
                            // 有记录，显示编辑状态但不自动进入管理界面
                            showClassroomPlanManagement(false); // 传false表示不自动触发点击
                            // 更新为编辑状态
                            $('#classroomeplan-status').html(
                                '<div class="alert alert-success">' +
                                '<i class="fa fa-check-circle"></i> ' +
                                '<strong>已设置指定教室</strong>' +
                                '<p style="margin-top: 10px;">该班级已设置指定教室和时间安排。</p>' +
                                '</div>'
                            );
                            $('#manage-classroomeplan-btn').html('<i class="fa fa-edit"></i> 编辑指定教室');
                        } else {
                            // 没有记录，显示默认状态
                            showDefaultClassroomPlanContent();
                        }
                    },
                    error: function (xhr, status, error) {
                        // 出错时显示默认状态
                        showDefaultClassroomPlanContent();
                    }
                });
            }

            // 页面加载完成后初始化状态
            $(document).ready(function () {
                // 延迟执行，确保DOM完全加载
                setTimeout(initClassroomPlanStatus, 500);
            });

            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));

                // 在主表单提交时，同步触发“项目参数”iframe里的确定按钮（同域）
                $(document).off('submit.classesIframeSync').on('submit.classesIframeSync', 'form[role=form]', function () {
                    try {
                        var $iframe = $('#coursetable-iframe');
                        if ($iframe.length === 0) return;

                        var iframe = $iframe.get(0);

                        // 内部点击函数
                        var clickInsideIframe = function () {
                            try {
                                var doc = iframe.contentWindow && iframe.contentWindow.document;
                                if (!doc) return;

                                // 优先按已知ID点击
                                var btn = doc.getElementById('classplant-edit-btn');
                                if (btn) {
                                    btn.click();
                                    return;
                                }

                                // 兜底：按文本“确定”查找
                                var okBtn = Array.prototype.find.call(doc.querySelectorAll('button, a, input[type="submit"]'), function (el) {
                                    var text = (el.textContent || el.value || '').trim();
                                    return text === '确定';
                                });
                                if (okBtn) okBtn.click();
                            } catch (e) {
                                // 同域下通常不会进入这里
                            }
                        };

                        // 如果 iframe 未设置 src，则按 tabs_5 的方式构建并加载后点击
                        var src = $iframe.attr('src');
                        if (!src || src.trim() === '') {
                            var iframeUrl = '/coursetable/classplant/edit?classes_id=' + $("#c-id").val() + '&relType=1&table_id=' + $("#c-table_id").val();
                            // $iframe.attr('src', iframeUrl);
                            // $iframe.one('load', function () {
                            //     clickInsideIframe();
                            // });
                        } else {
                            // 已有内容，直接点击
                            var readyState = (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.readyState) || '';
                            if (readyState === 'complete' || readyState === 'interactive') {
                                clickInsideIframe();
                            } else {
                                $iframe.one('load', function () {
                                    clickInsideIframe();
                                });
                            }
                        }
                    } catch (err) {
                        // 容错，不影响主表单提交
                    }

                    // 处理"指定教室"iframe
                    try {
                        var $classroomIframe = $('#classroomeplan-iframe');
                        if ($classroomIframe.length > 0) {
                            var classroomIframe = $classroomIframe.get(0);

                            // 内部点击函数
                            var clickInsideClassroomIframe = function () {
                                try {
                                    var doc = classroomIframe.contentWindow && classroomIframe.contentWindow.document;
                                    if (!doc) return;

                                    // 查找确定按钮
                                    var okBtn = Array.prototype.find.call(doc.querySelectorAll('button, a, input[type="submit"]'), function (el) {
                                        var text = (el.textContent || el.value || '').trim();
                                        return text === '确定' || text === 'OK' || text === '保存';
                                    });
                                    if (okBtn) okBtn.click();
                                } catch (e) {
                                    // 同域下通常不会进入这里
                                }
                            };

                            var src = $classroomIframe.attr('src');
                            if (src && src.trim() !== '') {
                                // 已有内容，直接点击
                                var readyState = (classroomIframe.contentWindow && classroomIframe.contentWindow.document && classroomIframe.contentWindow.document.readyState) || '';
                                if (readyState === 'complete' || readyState === 'interactive') {
                                    clickInsideClassroomIframe();
                                } else {
                                    $classroomIframe.one('load', function () {
                                        clickInsideClassroomIframe();
                                    });
                                }
                            }
                        }
                    } catch (err) {
                        // 容错，不影响主表单提交
                    }

                    // 不阻止默认提交，继续主流程
                });
            },

            // 初始化轮播图片管理功能
            initImageGroups: function (mode) {
                // 根据模式初始化不同的功能
                if (mode === 'add') {
                    // 添加模式下的初始化逻辑
                } else if (mode === 'edit') {
                    // 编辑模式下的初始化逻辑
                    // 可以在这里添加编辑模式下轮播图的初始化逻辑
                    setTimeout(function () {
                        Controller.api.updateCarouselPreview();
                    }, 500);
                }
            },

            // 更新轮播图预览
            updateCarouselPreview: function () {
                // 轮播图预览更新逻辑
                // 这里可以添加具体的轮播图预览更新代码
            },

            // 增强搜索功能：根据班级类型支持不同的搜索策略
            enhanceSearch: function (table, relType) {
                // 获取班级类型，如果没有传入则尝试从配置或表格中获取
                if (!relType) {
                    relType = Config.relType || Controller.api.getCurrentRelType(table);
                }

                // 自定义搜索处理
                var $searchInput = table.closest('.bootstrap-table').find('.search input');

                if ($searchInput.length > 0) {
                    // 根据班级类型设置不同的搜索提示和策略
                    var searchConfig = Controller.api.getSearchConfig(relType);

                    // 添加搜索提示和样式
                    $searchInput.attr('placeholder', searchConfig.placeholder)
                        .css({
                            'width': '350px',
                            'border': '2px solid ' + searchConfig.borderColor,
                            'border-radius': '5px',
                            'padding': '8px 12px'
                        });

                    // 监听搜索输入
                    $searchInput.off('input.custom-search').on('input.custom-search', function () {
                        var searchValue = $(this).val().trim();
                        var $helpText = $searchInput.closest('.search').find('.search-help');

                        if (searchValue === '') {
                            // 清空搜索时恢复到全部班级视图
                            Controller.api.resetToAllClasses(relType);
                            $helpText.html(searchConfig.helpText);
                            return;
                        }

                        // 动态更新搜索提示和状态
                        Controller.api.updateSearchHint($helpText, searchValue, relType);
                        Controller.api.showSearchStatus($searchInput, '正在执行快捷搜索...');

                        // 使用独立的快捷搜索方法
                        Controller.api.executeQuickSearch(table, searchValue, relType);

                        // 延迟显示搜索结果统计
                        setTimeout(function () {
                            Controller.api.showSearchResults(table, $helpText);
                            Controller.api.showSearchStatus($searchInput, '快捷搜索完成');
                        }, 500);
                    });

                    // 监听回车键
                    $searchInput.off('keypress.custom-search').on('keypress.custom-search', function (e) {
                        if (e.which === 13) { // 回车键
                            $(this).trigger('input.custom-search');
                        }
                    });

                    // 添加搜索说明提示和状态指示器
                    var $searchContainer = $searchInput.closest('.search');
                    if ($searchContainer.length > 0 && $searchContainer.find('.search-help').length === 0) {
                        $searchContainer.append('<small class="search-help text-muted" style="display: block; margin-top: 5px;">' + searchConfig.helpText + '</small>');

                        // 添加搜索状态指示器
                        $searchContainer.append('<div class="search-status" style="display: none; margin-top: 5px; padding: 5px; background-color: #e3f2fd; border-radius: 3px; border-left: 3px solid #2196f3;"><small><i class="fa fa-info-circle"></i> <span class="status-text"></span></small></div>');
                    }

                    // 调整表格列显示
                    Controller.api.adjustTableColumns(table, relType);

                }
            },

            // 获取当前班级类型
            getCurrentRelType: function (table) {
                // 尝试从表格ID或容器中推断班级类型
                var tableId = table.attr('id');
                if (tableId) {
                    if (tableId.indexOf('school') !== -1) return 1; // 学校班级
                    if (tableId.indexOf('community') !== -1) return 2; // 社区班级
                    if (tableId.indexOf('external') !== -1) return 3; // 校外班级
                }

                // 从当前激活的选项卡推断
                var activeTab = $('.nav-tabs li.active a').attr('href');
                if (activeTab) {
                    if (activeTab.indexOf('school') !== -1) return 1;
                    if (activeTab.indexOf('community') !== -1) return 2;
                    if (activeTab.indexOf('external') !== -1) return 3;
                }

                return 1; // 默认为学校班级
            },

            // 获取不同班级类型的搜索配置
            getSearchConfig: function (relType) {
                var configs = {
                    1: { // 学校班级
                        strategy: 'school',
                        placeholder: '🔍 快捷搜索：输入班级ID、班级名称、学校名称...',
                        borderColor: '#007bff',
                        helpText: '🏫 学校班级快捷搜索：自动切换到"全部班级"进行搜索，支持ID精确搜索、班级名称和学校名称模糊搜索',
                        searchFields: ['id', 'name', 'school_id']
                    },
                    2: { // 社区班级
                        strategy: 'community',
                        placeholder: '🔍 快捷搜索：输入班级ID、班级名称、社区名称、教学点...',
                        borderColor: '#28a745',
                        helpText: '🏘️ 社区班级快捷搜索：自动切换到"全部班级"进行搜索，支持ID精确搜索、班级名称、社区和教学点模糊搜索',
                        searchFields: ['id', 'name', 'community_id', 'ocation_id']
                    },
                    3: { // 校外班级
                        strategy: 'external',
                        placeholder: '🔍 快捷搜索：输入班级ID、班级名称、地区信息...',
                        borderColor: '#ffc107',
                        helpText: '🌍 校外班级快捷搜索：自动切换到"全部班级"进行搜索，支持ID精确搜索、班级名称和地区信息模糊搜索',
                        searchFields: ['id', 'name', 'city_id', 'community_id']
                    }
                };

                return configs[relType] || configs[1]; // 默认返回学校班级配置
            },

            // 执行搜索
            executeSearch: function (table, searchValue, relType) {
                var searchConfig = Controller.api.getSearchConfig(relType);
                var isNumeric = /^\d+$/.test(searchValue);

                if (isNumeric) {
                    // 数字搜索：精确匹配ID
                    table.bootstrapTable('filterBy', {
                        id: searchValue
                    });
                } else {
                    // 文本搜索：根据班级类型进行多字段模糊搜索
                    var filterObj = {};

                    // 为每个搜索字段设置搜索值（除了ID字段）
                    searchConfig.searchFields.forEach(function (field) {
                        if (field !== 'id') {
                            filterObj[field] = searchValue;
                        }
                    });

                    table.bootstrapTable('filterBy', filterObj, {
                        'filterAlgorithm': function (row, filters) {
                            // 实现OR逻辑：任意一个字段匹配即可
                            var matched = false;

                            for (var key in filters) {
                                var rowValue = row[key];
                                var filterValue = filters[key];

                                if (rowValue && filterValue) {
                                    var rowStr = rowValue.toString().toLowerCase();
                                    var filterStr = filterValue.toString().toLowerCase();

                                    if (rowStr.indexOf(filterStr) !== -1) {
                                        matched = true;
                                        break; // 找到匹配就跳出
                                    }
                                }
                            }

                            return matched;
                        }
                    });
                }

            },

            // 执行快捷搜索（使用独立的控制器方法）
            executeQuickSearch: function (table, searchValue, relType) {
                // 自动切换到"全部班级"选项卡
                Controller.api.switchToAllClassesTab(relType);

                var searchConfig = Controller.api.getSearchConfig(relType);

                // 构建搜索参数（不再需要手动指定搜索类型，后端会自动判断）
                var searchParams = {
                    search: searchValue,
                    rel_type: relType,
                    class_status: 0 // 0表示全部班级
                };

                // 使用独立的快捷搜索接口
                $.ajax({
                    url: $.fn.bootstrapTable.defaults.extend.index_url,
                    type: 'GET',
                    data: searchParams,
                    dataType: 'json',
                    success: function (response) {
                        if (response.code === 1) {
                            // 更新表格数据
                            table.bootstrapTable('load', response.data);
                        } else {
                            // 搜索失败，显示空结果
                            table.bootstrapTable('load', []);
                        }
                    },
                    error: function (xhr, status, error) {
                        // 降级到本地过滤搜索
                        Controller.api.executeSearch(table, searchValue, relType);
                    }
                });

            },

            // 重置到全部班级视图
            resetToAllClasses: function (relType) {
                // 自动切换到"全部班级"选项卡
                Controller.api.switchToAllClassesTab(relType);

                // 刷新对应的全部班级表格
                var containerId = Controller.api.getAllClassesContainerId(relType);
                var tableId = 'table_' + containerId;

                if ($('#' + tableId).length > 0) {
                    $('#' + tableId).bootstrapTable('refresh', { silent: true });
                } else {
                    // 切换分卡时，更新扩展URL，确保增删改带上 classes_type（外部tab强制为3）
                    updateExtendUrlsWithClassType(relType, containerId);
                    loadClassTable(relType, 0, containerId); // 0表示全部班级
                }

            },

            // 切换到"全部班级"选项卡
            switchToAllClassesTab: function (relType) {
                var tabSelectors = {
                    1: { // 学校班级
                        allTabs: '#schoolAll, #schoolOngoing, #schoolEnded, #schoolUnscheduled',
                        allTab: '#schoolAll',
                        navLink: 'a[href="#schoolAll"]'
                    },
                    2: { // 社区班级
                        allTabs: '#communityAll, #communityOngoing, #communityEnded, #communityUnscheduled',
                        allTab: '#communityAll',
                        navLink: 'a[href="#communityAll"]'
                    },
                    3: { // 校外班级
                        allTabs: '#externalAll, #externalOngoing, #externalEnded, #externalUnscheduled',
                        allTab: '#externalAll',
                        navLink: 'a[href="#externalAll"]'
                    }
                };

                var selector = tabSelectors[relType];
                if (selector) {
                    // 移除所有子选项卡的激活状态
                    $(selector.allTabs).removeClass('active in');

                    // 激活"全部班级"选项卡
                    $(selector.allTab).addClass('active in');

                    // 更新导航链接的激活状态
                    $(selector.navLink).parent().siblings().removeClass('active');
                    $(selector.navLink).parent().addClass('active');

                }
            },

            // 获取全部班级的容器ID
            getAllClassesContainerId: function (relType) {
                var containerIds = {
                    1: 'schoolAllTableContainer',
                    2: 'communityAllTableContainer',
                    3: 'externalAllTableContainer'
                };

                return containerIds[relType] || containerIds[1];
            },

            // 初始化时自动选中全部班级选项卡
            initializeAllClassesTabs: function () {
                // 为所有班级类型设置默认选中全部班级
                var relTypes = [1, 2, 3]; // 学校、社区、校外

                relTypes.forEach(function (relType) {
                    Controller.api.switchToAllClassesTab(relType);
                });

            },

            // 显示搜索状态
            showSearchStatus: function ($searchInput, statusText) {
                var $statusDiv = $searchInput.closest('.search').find('.search-status');
                if ($statusDiv.length > 0) {
                    $statusDiv.find('.status-text').text(statusText);
                    $statusDiv.show();

                    // 3秒后自动隐藏状态
                    setTimeout(function () {
                        $statusDiv.fadeOut();
                    }, 3000);
                }
            },

            // 动态调整表格列的可见性，根据班级类型显示相关字段
            adjustTableColumns: function (table, relType) {
                var columnsToShow = [];
                var columnsToHide = [];

                switch (relType) {
                    case 1: // 学校班级
                        columnsToShow = ['school_id'];
                        columnsToHide = ['community_id', 'ocation_id'];
                        break;
                    case 2: // 社区班级
                        columnsToShow = ['community_id', 'ocation_id'];
                        columnsToHide = ['school_id'];
                        break;
                    case 3: // 校外班级
                        columnsToShow = ['city_id', 'community_id'];
                        columnsToHide = ['school_id', 'ocation_id'];
                        break;
                }

                // 显示相关列
                columnsToShow.forEach(function (field) {
                    table.bootstrapTable('showColumn', field);
                });

                // 隐藏不相关列
                columnsToHide.forEach(function (field) {
                    table.bootstrapTable('hideColumn', field);
                });

            },

            // 动态更新搜索提示
            updateSearchHint: function ($helpText, searchValue, relType) {
                var hints = {
                    1: { // 学校班级
                        text: '🔍 已切换到"全部班级"，智能搜索班级信息中...'
                    },
                    2: { // 社区班级
                        text: '🔍 已切换到"全部班级"，智能搜索班级信息中...'
                    },
                    3: { // 校外班级
                        text: '🔍 已切换到"全部班级"，智能搜索班级信息中...'
                    }
                };

                var hintConfig = hints[relType] || hints[1];
                var hintText = hintConfig.text;

                $helpText.html('<span style="color: #007bff; font-weight: bold;">' + hintText + '</span>');
            },

            // 显示搜索结果统计
            showSearchResults: function (table, $helpText) {
                try {
                    var data = table.bootstrapTable('getData');
                    var totalCount = data.length;
                    var resultText = '';

                    if (totalCount === 0) {
                        resultText = '<span style="color: #dc3545;">❌ 未找到匹配的班级</span>';
                    } else if (totalCount === 1) {
                        resultText = '<span style="color: #28a745;">✅ 找到 1 个班级</span>';
                    } else {
                        resultText = '<span style="color: #28a745;">✅ 找到 ' + totalCount + ' 个班级</span>';
                    }

                    $helpText.html(resultText);
                } catch (e) {
                }
            },

            // 绑定学员表格事件
            bindStudentTableEvents: function () {
                // 全选/取消全选
                $(document).off('change', '.check-all').on('change', '.check-all', function () {
                    var checked = $(this).prop('checked');
                    $('.check-item').prop('checked', checked);
                });

                // 单个复选框变化时检查全选状态
                $(document).off('change', '.check-item').on('change', '.check-item', function () {
                    var total = $('.check-item').length;
                    var checked = $('.check-item:checked').length;
                    $('.check-all').prop('checked', total === checked);
                });

                // 刷新按钮 - 使用更具体的选择器，避免与工具栏刷新按钮冲突
                $(document).off('click', '#student-manager-content .btn-refresh').on('click', '#student-manager-content .btn-refresh', function () {
                    // 清除已加载标记
                    $('#student-manager-content').removeData('loaded');

                    // 显示加载提示
                    $('#student-manager-content').html('<div class="alert alert-info"><i class="fa fa-spinner fa-spin"></i> 正在刷新数据...</div>');

                    // 重新触发学员管理选项卡的加载事件
                    $('a[href="#tabs_3"]').trigger('shown.bs.tab');
                });

                // 添加学员按钮 - 使用更具体的选择器，避免与工具栏添加按钮冲突
                $(document).off('click', '#student-manager-table .btn-add').on('click', '#student-manager-table .btn-add', function () {
                    Layer.alert('添加学员功能待开发', { icon: 1 });
                });

                // 批量删除按钮 - 使用更具体的选择器
                $(document).off('click', '#student-manager-content .btn-del-all').on('click', '#student-manager-content .btn-del-all', function () {
                    var ids = [];
                    $('.check-item:checked').each(function () {
                        ids.push($(this).val());
                    });

                    if (ids.length === 0) {
                        Layer.alert('请选择要删除的学员', { icon: 2 });
                        return;
                    }

                    Layer.confirm('确定要删除选中的 ' + ids.length + ' 个学员吗？', { icon: 3 }, function (index) {
                        Layer.alert('批量删除功能待开发', { icon: 1 });
                        Layer.close(index);
                    });
                });

                // 分页点击事件
                $(document).off('click', '.pagination a').on('click', '.pagination a', function (e) {
                    e.preventDefault();
                    var page = $(this).data('page');
                    if (page && !$(this).parent().hasClass('disabled') && !$(this).parent().hasClass('active')) {
                        Layer.alert('分页功能待开发，将跳转到第 ' + page + ' 页', { icon: 1 });
                    }
                });

                // 考勤统计按钮
                $(document).off('click', '.btn-attendance').on('click', '.btn-attendance', function () {
                    var studentId = $(this).data('id');
                    Layer.alert('考勤统计功能待开发，学员ID：' + studentId, { icon: 1 });
                });

                // 扫码缴费按钮
                $(document).off('click', '.btn-payment').on('click', '.btn-payment', function () {
                    var studentId = $(this).data('id');
                    Layer.alert('扫码缴费功能待开发，学员ID：' + studentId, { icon: 1 });
                });
            },

            // 收集表单数据
            collectFormData: function () {
                var formData = {};

                // 基本信息
                formData.name = $('#c-name').val() || '';
                formData.nianji = $('#c-nianji').val() || '';
                formData.xueqi = $('#c-xueqi').val() || '';
                formData.qishu = $('#c-qishu').val() || '';
                formData.price = $('#c-price').val() || '';
                formData.num = $('#c-num').val() || '';
                formData.ocation_id = $('#c-ocation_id').val() || '';

                // 获取选择框的文本值
                formData.rel_type_text = $('#c-rel_type option:selected').text() || '';
                formData.rel_id_text = $('#c-rel_id option:selected').text() || '';
                formData.classes_type_text = $('#c-classes_type option:selected').text() || '';
                formData.subject_lv_text = $('#c-subject_lv option:selected').text() || '';
                formData.addresslv_id_tree_text = $('#c-addresslv_id_tree option:selected').text() || '';
                formData.community_id_text = $('#c-community_id option:selected').text() || '';
                formData.class_type_text = $('#c-class_type option:selected').text() || '';

                // 清理选择框文本中的特殊字符
                Object.keys(formData).forEach(function (key) {
                    if (key.endsWith('_text') && formData[key]) {
                        formData[key] = formData[key].replace(/\s|&nbsp;|├|└|──/g, '').replace(/^请选择/, '');
                    }
                });

                return formData;
            },

            // 构建班级介绍提示词
            buildClassIntroPrompt: function (formData, ocationContent) {
                var prompt = '# AI班级介绍生成任务\n\n';



                prompt += '## 班级基本信息\n';

                if (formData.name) {
                    prompt += '**班级名称：** ' + formData.name + '\n';
                }

                if (formData.nianji) {
                    prompt += '**年级：** ' + formData.nianji + '\n';
                }

                if (formData.xueqi) {
                    prompt += '**学期：** ' + formData.xueqi + '\n';
                }

                if (formData.qishu) {
                    prompt += '**期数：** 第' + formData.qishu + '期\n';
                }

                if (formData.subject_lv_text && formData.subject_lv_text !== '请选择') {
                    prompt += '**课程类别：** ' + formData.subject_lv_text + '\n';
                }

                if (formData.classes_type_text && formData.classes_type_text !== '请选择') {
                    prompt += '**班级类型：** ' + formData.classes_type_text + '\n';
                }

                if (formData.class_type_text && formData.class_type_text !== '请选择') {
                    prompt += '**课程类型：** ' + formData.class_type_text + '\n';
                }

                if (formData.rel_id_text && formData.rel_id_text !== '请选择') {
                    prompt += '**所属机构：** ' + formData.rel_id_text + '\n';
                }

                if (formData.addresslv_id_tree_text && formData.addresslv_id_tree_text !== '请选择') {
                    prompt += '**学院：** ' + formData.addresslv_id_tree_text + '\n';
                }

                if (formData.community_id_text && formData.community_id_text !== '请选择') {
                    prompt += '**社区：** ' + formData.community_id_text + '\n';
                }

                if (formData.num) {
                    prompt += '**班级人数：** ' + formData.num + '人\n';
                }

                if (formData.price) {
                    var priceText = parseFloat(formData.price) > 0 ? formData.price + '元' : '免费';
                    prompt += '**学费：** ' + priceText + '\n';
                }



                // 如果有教学点介绍，先添加教学点信息
                if (ocationContent) {
                    prompt += '## 教学点介绍\n';
                    prompt += ocationContent + '\n\n';
                }


                prompt += '\n## 生成要求\n';
                prompt += '1. 字数限制：200-400字\n';
                prompt += '2. 语言风格：亲切友好，富有吸引力\n';
                prompt += '3. 内容要点：\n';
                prompt += '   - 突出班级特色和优势\n';
                prompt += '   - 体现课程的实用性和专业性\n';
                prompt += '   - 营造积极向上的学习氛围\n';
                prompt += '   - 适当提及师资力量和教学环境\n';
                prompt += '   - 结合教学点的特色和优势\n';
                prompt += '4. 格式：HTML格式，包含适当的段落和强调\n';
                prompt += '5. 先介绍课程，再介绍班级，再介绍教学点，最后总结\n\n';
                prompt += '请生成班级介绍,内容格式为html格式，请排好版，特别是段落不要存在多个换行如<br>,注意大小标题文字加粗';
                // 添加教学点ID信息（用于后端增强提示词）
                if (formData.ocation_id) {
                    prompt += '**教学点ID：** ' + formData.ocation_id + '\n\n';
                }
                return prompt;
            },

            // 构建课程介绍提示词
            buildCourseIntroPrompt: function (formData, ocationContent) {
                var prompt = '# AI课程介绍生成任务\n\n';

                prompt += '## 课程基本信息\n';

                if (formData.name) {
                    prompt += '**班级名称：** ' + formData.name + '\n';
                }

                if (formData.subject_lv_text && formData.subject_lv_text !== '请选择') {
                    prompt += '**课程类别：** ' + formData.subject_lv_text + '\n';
                }

                if (formData.class_type_text && formData.class_type_text !== '请选择') {
                    prompt += '**课程类型：** ' + formData.class_type_text + '\n';
                }

                if (formData.nianji) {
                    prompt += '**适合年级：** ' + formData.nianji + '\n';
                }

                if (formData.xueqi) {
                    prompt += '**学期：** ' + formData.xueqi + '\n';
                }

                if (formData.qishu) {
                    prompt += '**期数：** 第' + formData.qishu + '期\n';
                }

                if (formData.classes_type_text && formData.classes_type_text !== '请选择') {
                    prompt += '**班级类型：** ' + formData.classes_type_text + '\n';
                }

                if (formData.num) {
                    prompt += '**班级规模：** ' + formData.num + '人\n';
                }

                if (formData.price) {
                    var priceText = parseFloat(formData.price) > 0 ? formData.price + '元' : '免费';
                    prompt += '**课程费用：** ' + priceText + '\n';
                }

                if (formData.rel_id_text && formData.rel_id_text !== '请选择') {
                    prompt += '**主办机构：** ' + formData.rel_id_text + '\n';
                }

                if (formData.addresslv_id_tree_text && formData.addresslv_id_tree_text !== '请选择') {
                    prompt += '**所属学院：** ' + formData.addresslv_id_tree_text + '\n';
                }

                if (formData.community_id_text && formData.community_id_text !== '请选择') {
                    prompt += '**服务社区：** ' + formData.community_id_text + '\n';
                }

                // 如果有教学点介绍，添加教学点信息
                if (ocationContent) {
                    prompt += '\n## 教学点信息\n';
                    prompt += ocationContent + '\n\n';
                }

                prompt += '\n## 生成要求\n';
                prompt += '1. 字数限制：300-500字\n';
                prompt += '2. 语言风格：专业权威，通俗易懂\n';
                prompt += '3. 内容要点：\n';
                prompt += '   - 详细介绍课程内容和学习目标\n';
                prompt += '   - 突出课程的实用性和专业性\n';
                prompt += '   - 说明课程适合的学员群体\n';
                prompt += '   - 介绍教学方法和学习方式\n';
                prompt += '   - 体现课程的特色和优势\n';
                prompt += '   - 适当提及师资力量和教学资源\n';
                prompt += '4. 格式：HTML格式，包含适当的段落和强调\n';
                prompt += '5. 结构：课程概述 → 学习内容 → 教学特色 → 学习收获\n\n';
                prompt += '请生成课程介绍,内容格式为html格式，请排好版，特别是段落不要存在多个换行如<br>,注意大小标题文字加粗';

                // 添加教学点ID信息（用于后端增强提示词）
                if (formData.ocation_id) {
                    prompt += '**教学点ID：** ' + formData.ocation_id + '\n\n';
                }

                return prompt;
            },

            // 设置编辑器内容
            setEditorContent: function ($element, content) {
                try {
                    // 检查是否是富文本编辑器
                    if ($element.hasClass('editor')) {
                        // 尝试不同的富文本编辑器

                        // 1. 尝试 Summernote
                        if (typeof $element.summernote === 'function') {
                            $element.summernote('code', content);
                            return;
                        }

                        // 2. 尝试 UEditor
                        if (typeof UE !== 'undefined' && UE.getEditor) {
                            var editor = UE.getEditor($element.attr('id'));
                            if (editor) {
                                editor.setContent(content);
                                return;
                            }
                        }

                        // 3. 尝试 CKEditor
                        if (typeof CKEDITOR !== 'undefined' && CKEDITOR.instances) {
                            var editor = CKEDITOR.instances[$element.attr('id')];
                            if (editor) {
                                editor.setData(content);
                                return;
                            }
                        }

                        // 4. 尝试 TinyMCE
                        if (typeof tinymce !== 'undefined') {
                            var editor = tinymce.get($element.attr('id'));
                            if (editor) {
                                editor.setContent(content);
                                return;
                            }
                        }

                        // 5. 如果都不是，尝试通过jQuery插件方式调用Summernote
                        if ($.fn.summernote) {
                            try {
                                $element.summernote('code', content);
                                return;
                            } catch (e) {
                            }
                        }

                        // 6. 最后回退到普通文本框
                        $element.val(content);
                    } else {
                        // 普通文本框
                        $element.val(content);
                    }

                    // 触发change事件
                    $element.trigger('change');

                } catch (error) {
                    // 出错时回退到普通文本框
                    $element.val(content);
                    $element.trigger('change');
                }
            },
            formatter: {//渲染的方法
                url: function (value, row, index) {
                    return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>';
                },
                ip: function (value, row, index) {
                    return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>';
                },
                status: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="classes/classes/status" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status == 0 || row.status == null ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                },
                changeStatus: function (value, row, index) {
                    //添加上btn-change可以自定义请求的URL进行数据处理
                    return '<a class="btn-change text-success" data-url="classes/classes/classes/classes/changeStatus" data-confirm="确认切换状态？" data-id="' + row.id + '"><i class="fa ' + (row.status === 0 ? 'fa-toggle-on fa-flip-horizontal text-gray' : 'fa-toggle-on') + ' fa-2x"></i></a>';
                },
                imageBase64: function (value, row, index) {
                    if (!value) return '';
                    return '<img src="' + value + '" width="220" height="220" style="display: inline-block;">';
                },
                className: function (value, row, index) {
                    var $str = '';
                    if (value) {
                        $str += value + '<br>';;
                    }
                    if (row.teacher_id) {
                        $str = '老师：' + row.teacher_id;
                    }
                    if (row.manager_id) {
                        $str += '班主任：' + row.manager_id + '<br>';
                    }
                    if (row.leader_id) {
                        $str += '班长：' + row.leader_id + '<br>';
                    }
                    if (row.classroom_time) {
                        $str += row.classroom_time + '<br>';
                    }
                    return $str;
                }

            },
            events: {//绑定事件的方法
                ip: {
                    //格式为：方法名+空格+DOM元素
                    'click .btn-ip': function (e, value, row, index) {
                        e.stopPropagation();
                        var container = $("#table").data("bootstrap.table").$container;
                        var options = $("#table").bootstrapTable('getOptions');
                        //这里我们手动将数据填充到表单然后提交
                        $("form.form-commonsearch [name='ip']", container).val(value);
                        $("form.form-commonsearch", container).trigger('submit');
                        Toastr.info("执行了自定义搜索操作");
                    }
                }
            },

            // 更新轮播图预览
            updateCarouselPreview: function () {
                var classId = Fast.api.query('ids');
                if (!classId) {
                    return;
                }

                // 获取轮播图数据
                $.ajax({
                    url: '/slider/slider/getCarouselImages',
                    data: {
                        classes_id: classId,
                        type: 'classes'
                    },
                    type: 'GET',
                    success: function (response) {
                        var $previewContainer = $('#carousel-preview-container');

                        if (response.code === 1 && response.data && response.data.length > 0) {
                            var previewHtml = '<div class="carousel-preview">';
                            $.each(response.data, function (index, item) {
                                previewHtml += '<div class="carousel-item" style="margin-bottom: 10px;">';
                                previewHtml += '<img src="' + item.url + '" style="max-width: 200px; max-height: 100px; border: 1px solid #ddd; border-radius: 4px; margin-right: 10px;">';
                                if (item.title) {
                                    previewHtml += '<div class="item-title" style="font-size: 12px; color: #666;">' + item.title + '</div>';
                                }
                                previewHtml += '</div>';
                            });
                            previewHtml += '</div>';
                            $previewContainer.html(previewHtml);
                        } else {
                            $previewContainer.html('<div class="text-center" style="padding: 40px; color: #999;"><i class="fa fa-picture-o fa-3x"></i><p style="margin-top: 15px;">暂无轮播图，请点击上方按钮进行设置</p></div>');
                        }
                    },
                    error: function () {
                    }
                });
            },

            // 增强搜索功能
            enhanceSearch: function (table, relType) {
                // 检查URL中是否有快速搜索参数
                var urlParams = new URLSearchParams(window.location.search);
                var searchValue = urlParams.get('search');
                var urlRelType = urlParams.get('rel_type');
                var classStatus = urlParams.get('class_status');

                // 只要有search_value就执行搜索，自动判断搜索类型
                if (searchValue) {
                    // 自动判断搜索类型：数字为ID搜索，否则为文本搜索
                    var searchType = /^\d+$/.test(searchValue.trim()) ? 'id' : 'text';

                    // 执行快速搜索并自动切换到全部班级
                    Controller.api.performQuickSearchWithAllClasses({
                        search: searchValue,
                        rel_type: urlRelType || relType || 1,
                        class_status: 'all' // 强制使用全部班级
                    });
                }

                // 绑定Bootstrap Table的搜索事件
                Controller.api.handleBootstrapTableSearch(table, relType);

                // 添加自定义搜索输入处理
                Controller.api.bindCustomSearchInput(table, relType);
            },

            // 执行快速搜索
            performQuickSearch: function (params) {
                // 发送AJAX请求到后端的index方法（快速搜索在index中处理）
                $.ajax({
                    url: 'classes/classes/index',
                    type: 'GET',
                    data: params,
                    dataType: 'json',
                    headers: {
                        'X-Requested-With': 'XMLHttpRequest'
                    },
                    success: function (response) {
                        if (response.code === 1) {
                            // 搜索成功，显示结果
                            Controller.api.displaySearchResults(response.data, response.total, params);
                        } else {
                            // 搜索失败
                            Controller.api.displaySearchError(response.msg || '搜索失败');
                        }
                    },
                    error: function (xhr, status, error) {
                        Controller.api.displaySearchError('网络错误：' + error);
                    }
                });
            },

            // 显示搜索结果
            displaySearchResults: function (data, total, params) {
                // 根据rel_type确定要操作的表格
                var relType = parseInt(params.rel_type);

                if (relType === 2) {
                    // 社区班级 - 激活社区选项卡
                    $('#mainClassTab a[data-reltype="2"]').tab('show');

                    // 确保社区班级的"全部班级"按钮被激活
                    Controller.api.activateAllClassesButton('community');

                    // 延迟执行以确保选项卡切换完成
                    setTimeout(function () {
                        Controller.api.loadAndDisplayCommunitySearchResults(data, total);
                    }, 300);

                } else if (relType === 1) {
                    // 学校班级 - 激活学校选项卡
                    $('#mainClassTab a[data-reltype="1"]').tab('show');

                    // 确保学校班级的"全部班级"按钮被激活
                    Controller.api.activateAllClassesButton('school');

                    // 延迟执行以确保选项卡切换完成
                    setTimeout(function () {
                        Controller.api.loadAndDisplaySchoolSearchResults(data, total);
                    }, 300);

                } else {
                    // 校外班级或其他类型
                    $('#mainClassTab a[data-reltype="3"]').tab('show');

                    // 确保校外班级的"全部班级"按钮被激活
                    Controller.api.activateAllClassesButton('external');

                    // 延迟执行以确保选项卡切换完成
                    setTimeout(function () {
                        Controller.api.loadAndDisplayExternalSearchResults(data, total);
                    }, 300);
                }
            },

            // 加载并显示学校班级搜索结果
            loadAndDisplaySchoolSearchResults: function (data, total) {
                // 确保学校全部班级表格存在
                Controller.api.createSchoolAllTable();

                // 获取学校全部班级表格
                var $table = $('#table_schoolAllTableContainer');
                if ($table.length === 0) {
                    return;
                }

                // 更新表格数据
                Controller.api.updateTableData($table, data, total);
            },

            // 加载并显示社区班级搜索结果
            loadAndDisplayCommunitySearchResults: function (data, total) {
                // 确保社区全部班级表格存在
                Controller.api.createCommunityAllTable();

                // 获取社区全部班级表格
                var $table = $('#table_communityAllTableContainer');
                if ($table.length === 0) {
                    return;
                }

                // 更新表格数据
                Controller.api.updateTableData($table, data, total);
            },

            // 加载并显示校外班级搜索结果
            loadAndDisplayExternalSearchResults: function (data, total) {
                // 确保校外全部班级表格存在
                Controller.api.createExternalAllTable();

                // 获取校外全部班级表格
                var $table = $('#table_externalAllTableContainer');
                if ($table.length === 0) {
                    return;
                }

                // 更新表格数据
                Controller.api.updateTableData($table, data, total);
            },

            // 创建学校全部班级表格
            createSchoolAllTable: function () {
                var containerId = 'schoolAllTableContainer';
                var tableId = 'table_' + containerId;

                // 如果表格已存在，直接返回
                if ($('#' + tableId).length > 0) {
                    return;
                }

                // 确保容器存在
                if ($('#' + containerId).length === 0) {
                    return;
                }

                // 创建表格
                $('#' + containerId).html('<table id="' + tableId + '" class="table table-striped table-bordered table-hover"></table>');

                // 初始化表格
                $('#' + tableId).bootstrapTable({
                    data: [], // 空数据，将通过load方法加载
                    escape: false,
                    pk: 'id',
                    pageSize: 30,
                    sortName: 'sequence_number',
                    sortOrder: 'asc',
                    search: true, // 启用搜索功能以显示搜索框
                    showSearch: true, // 显示搜索框
                    searchOnEnterKey: false, // 禁用回车键搜索，使用我们的自定义处理
                    showRefresh: true,
                    showColumns: true,
                    columns: Controller.api.getSchoolTableColumns()
                });

            },

            // 创建社区全部班级表格
            createCommunityAllTable: function () {
                var containerId = 'communityAllTableContainer';
                var tableId = 'table_' + containerId;

                // 如果表格已存在，直接返回
                if ($('#' + tableId).length > 0) {
                    return;
                }

                // 确保容器存在
                if ($('#' + containerId).length === 0) {
                    return;
                }

                // 创建表格
                $('#' + containerId).html('<table id="' + tableId + '" class="table table-striped table-bordered table-hover"></table>');

                // 初始化表格
                $('#' + tableId).bootstrapTable({
                    data: [], // 空数据，将通过load方法加载
                    escape: false,
                    pk: 'id',
                    pageSize: 30,
                    sortName: 'sequence_number',
                    sortOrder: 'asc',
                    search: true, // 启用搜索功能以显示搜索框
                    showSearch: true, // 显示搜索框
                    searchOnEnterKey: false, // 禁用回车键搜索，使用我们的自定义处理
                    showRefresh: true,
                    showColumns: true,
                    columns: Controller.api.getCommunityTableColumns()
                });

            },

            // 创建校外全部班级表格
            createExternalAllTable: function () {
                var containerId = 'externalAllTableContainer';
                var tableId = 'table_' + containerId;

                // 如果表格已存在，直接返回
                if ($('#' + tableId).length > 0) {
                    return;
                }

                // 确保容器存在
                if ($('#' + containerId).length === 0) {
                    return;
                }

                // 创建表格
                $('#' + containerId).html('<table id="' + tableId + '" class="table table-striped table-bordered table-hover"></table>');

                // 初始化表格
                $('#' + tableId).bootstrapTable({
                    data: [], // 空数据，将通过load方法加载
                    escape: false,
                    pk: 'id',
                    pageSize: 30,
                    sortName: 'sequence_number',
                    sortOrder: 'asc',
                    search: true, // 启用搜索功能以显示搜索框
                    showSearch: true, // 显示搜索框
                    searchOnEnterKey: false, // 禁用回车键搜索，使用我们的自定义处理
                    showRefresh: true,
                    showColumns: true,
                    columns: Controller.api.getExternalTableColumns()
                });

            },

            // 更新表格数据
            updateTableData: function (table, data, total) {
                // 确保table是jQuery对象
                var $table = $('#' + table[0].getAttribute("id"));
                try {
                    // 获取实际的bootstrap table元素
                    var $bootstrapTable = $table;

                    // 使用静默模式加载数据
                    $bootstrapTable.bootstrapTable('load', {
                        data: data || [],
                        silent: true
                    });

                    // 更新总数显示
                    var options = $bootstrapTable.bootstrapTable('getOptions');
                    if (options) {
                        options.totalRows = total || 0;
                        $bootstrapTable.bootstrapTable('resetView');
                    }

                    // 显示成功消息
                    var message = total > 0 ?
                        '✅ 搜索成功，找到 ' + total + ' 个班级' :
                        '⚠️ 未找到匹配的班级';

                    // 使用多级提示机制
                    Controller.api.showMessage(message, total > 0 ? 'success' : 'warning');

                } catch (error) {
                    Controller.api.displaySearchError('显示搜索结果失败: ' + error.message);
                }
            },

            // 显示搜索错误
            displaySearchError: function (errorMsg) {
                Controller.api.showMessage('❌ ' + errorMsg, 'error');
            },

            // 多级提示机制
            showMessage: function (message, type) {
                type = type || 'info';

                try {
                    // 优先使用layer.msg
                    if (typeof layer !== 'undefined' && layer.msg) {
                        var icon = type === 'success' ? 1 : (type === 'error' ? 2 : 0);
                        layer.msg(message, { icon: icon, time: 3000 });
                        return;
                    }
                } catch (e) {
                }

                try {
                    // 降级到Toastr
                    if (typeof Toastr !== 'undefined') {
                        switch (type) {
                            case 'success':
                                Toastr.success(message);
                                break;
                            case 'error':
                                Toastr.error(message);
                                break;
                            case 'warning':
                                Toastr.warning(message);
                                break;
                            default:
                                Toastr.info(message);
                        }
                        return;
                    }
                } catch (e) {
                }

                // 最后使用alert兜底
                alert(message);
            },

            // 激活指定类型的"全部班级"按钮
            activateAllClassesButton: function (classType) {
                try {
                    // 根据班级类型激活对应的"全部班级"按钮
                    if (classType === 'school') {
                        // 激活学校的全部班级按钮
                        $('#schoolAll').addClass('active').siblings().removeClass('active');
                        $('#schoolAllTab').addClass('in active').siblings().removeClass('in active');

                        // 显示学校全部班级容器
                        $('#schoolAllTableContainer').show().siblings('.tab-pane').hide();

                    } else if (classType === 'community') {
                        // 激活社区的全部班级按钮
                        $('#communityAll').addClass('active').siblings().removeClass('active');
                        $('#communityAllTab').addClass('in active').siblings().removeClass('in active');

                        // 显示社区全部班级容器
                        $('#communityAllTableContainer').show().siblings('.tab-pane').hide();

                    } else if (classType === 'external') {
                        // 激活校外的全部班级按钮
                        $('#externalAll').addClass('active').siblings().removeClass('active');
                        $('#externalAllTab').addClass('in active').siblings().removeClass('in active');

                        // 显示校外全部班级容器
                        $('#externalAllTableContainer').show().siblings('.tab-pane').hide();
                    }

                } catch (error) {
                }
            },

            // 初始化智能搜索功能
            initSmartSearch: function () {
                var $searchInput = $('#smartSearch');
                var $searchBtn = $('#searchBtn');
                var $clearBtn = $('#clearSearchBtn');
                var $searchHint = $('#searchHint');

                // 搜索按钮点击事件
                $searchBtn.on('click', function () {
                    debugger;
                    var searchValue = $searchInput.val().trim();
                    if (searchValue) {
                        Controller.api.performSmartSearch(searchValue);
                    }
                });

                // 清空搜索按钮点击事件
                $clearBtn.on('click', function () {
                    $searchInput.val('');
                    $searchHint.text('输入数字进行ID精确搜索，输入文字进行名称模糊搜索');
                    // 刷新当前表格
                    Controller.api.refreshCurrentTable();
                });

                // 回车键搜索
                $searchInput.on('keypress', function (e) {
                    debugger;
                    if (e.which === 13) {
                        var searchValue = $(this).val().trim();
                        if (searchValue) {
                            Controller.api.performSmartSearch(searchValue);
                        }
                    }
                });

                // 输入时动态更新提示
                $searchInput.on('input', function () {
                    var searchValue = $(this).val().trim();
                    if (searchValue) {
                        var isNumeric = /^\d+$/.test(searchValue);
                        var hintText = isNumeric ?
                            '🔍 将进行ID精确搜索' :
                            '🔍 将进行名称模糊搜索';
                        $searchHint.html('<span style="color: #007bff;">' + hintText + '</span>');
                    } else {
                        $searchHint.text('输入数字进行ID精确搜索，输入文字进行名称模糊搜索');
                    }
                });
            },

            // 执行智能搜索
            performSmartSearch: function (searchValue) {

                // 获取当前激活的班级类型
                var currentRelType = 1; // 默认学校班级
                if ($('#communityTab').hasClass('active')) {
                    currentRelType = 2;
                } else if ($('#externalTab').hasClass('active')) {
                    currentRelType = 3;
                }

                // 自动切换到"全部班级"并执行搜索
                Controller.api.performQuickSearchWithAllClasses({
                    search: searchValue,
                    rel_type: currentRelType,
                    class_status: 'all'
                });

                // 更新搜索提示
                var $searchHint = $('#searchHint');
                $searchHint.html('<span style="color: #28a745;">🔍 正在搜索中...</span>');
            },

            // 刷新当前表格
            refreshCurrentTable: function () {

                // 获取当前激活的表格并刷新
                var $activeTable = $('.tab-pane.active table');
                if ($activeTable.length > 0) {
                    $activeTable.bootstrapTable('refresh');
                }
            },

            // 获取学校表格列配置
            getSchoolTableColumns: function () {
                return [
                    [{ checkbox: true }],
                    [
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'school_id', title: '学校', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'rel_id', title: '学校' },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'subject_lv', title: '课程类别' },
                        { field: 'num', title: '班级人数' },
                        { field: 'apply_num', title: '报名人数' },
                        { field: 'price', title: '学费' },
                        { field: 'status', title: '状态', operate: '=', formatter: Table.api.formatter.status },
                        { field: 'create_time', title: '创建时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime },
                        {
                            field: 'operate', title: '操作', table: '', events: Table.api.events.operate, formatter: function (value, row, index) {
                                var actions = [];
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-success btn-editone" title="编辑"><i class="fa fa-pencil"></i></a>');
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-danger btn-delone" title="删除"><i class="fa fa-trash"></i></a>');
                                return actions.join(' ');
                            }
                        }
                    ]
                ];
            },

            // 获取社区表格列配置
            getCommunityTableColumns: function () {
                return [
                    [{ checkbox: true }],
                    [
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'community_id', title: '社区', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'rel_id', title: '社区' },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'subject_lv', title: '课程类别' },
                        { field: 'num', title: '班级人数' },
                        { field: 'apply_num', title: '报名人数' },
                        { field: 'price', title: '学费' },
                        { field: 'status', title: '状态', operate: '=', formatter: Table.api.formatter.status },
                        { field: 'create_time', title: '创建时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime },
                        {
                            field: 'operate', title: '操作', table: '', events: Table.api.events.operate, formatter: function (value, row, index) {
                                var actions = [];
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-success btn-editone" title="编辑"><i class="fa fa-pencil"></i></a>');
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-danger btn-delone" title="删除"><i class="fa fa-trash"></i></a>');
                                return actions.join(' ');
                            }
                        }
                    ]
                ];
            },

            // 获取校外表格列配置
            getExternalTableColumns: function () {
                return [
                    [{ checkbox: true }],
                    [
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'ocation_id', title: '校外机构', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'rel_id', title: '校外机构' },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'subject_lv', title: '课程类别' },
                        { field: 'num', title: '班级人数' },
                        { field: 'apply_num', title: '报名人数' },
                        { field: 'price', title: '学费' },
                        { field: 'status', title: '状态', operate: '=', formatter: Table.api.formatter.status },
                        { field: 'create_time', title: '创建时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime },
                        {
                            field: 'operate', title: '操作', table: '', events: Table.api.events.operate, formatter: function (value, row, index) {
                                var actions = [];
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-success btn-editone" title="编辑"><i class="fa fa-pencil"></i></a>');
                                actions.push('<a href="javascript:;" class="btn btn-xs btn-danger btn-delone" title="删除"><i class="fa fa-trash"></i></a>');
                                return actions.join(' ');
                            }
                        }
                    ]
                ];
            },

            // 加载班级表格（修复引用）
            loadClassTable: function (relType, classStatus, containerId) {
                // 检查容器是否存在
                if ($('#' + containerId).length === 0) {
                    return;
                }

                // 销毁现有表格
                var tableId = 'table_' + containerId;
                if ($('#' + tableId).length > 0) {
                    $('#' + tableId).bootstrapTable('destroy');
                }

                // 重新创建表格
                $("#" + containerId).html('<table id="' + tableId + '" class="table table-striped table-bordered table-hover"></table>');
                $('#' + tableId).bootstrapTable({
                    url: $.fn.bootstrapTable.defaults.extend.index_url,
                    queryParams: function (params) {
                        params.rel_type = relType;
                        params.class_status = classStatus;
                        params.rel_id = Config.relId;
                        params.classes_type = relType === 1 ? 1 : (relType === 2 ? 2 : 3); // 学校是1，社区是2，校外是3
                        params.table = 'fa_course_table_autoplan_temp';
                        if (relType === 2) {
                            params.group = 'location_id';
                            params.order = 'oc ASC';
                            params.limit = 1;
                        }
                        // 确保搜索参数正确传递
                        if (params.searchText) {
                            params.keyword = params.searchText;
                        }
                        return params;
                    },
                    escape: false,
                    pk: 'id',
                    pageSize: 30,
                    sortName: 'sequence_number',
                    sortOrder: 'asc',
                    search: true,
                    showSearch: true,
                    searchOnEnterKey: true,
                    showRefresh: true,
                    showColumns: true,
                    columns: Controller.api.getTableColumns(relType)
                });
            },

            // 获取表格列配置
            getTableColumns: function (relType) {
                return [
                    [
                        { checkbox: true },
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = row.sequence_type == 1 ? 'text-primary' : 'text-success';
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'school_id', title: '学校', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true },
                        { field: 'community_id', title: '社区', operate: 'LIKE', searchable: true },
                        { field: 'ocation_id', title: '教学点', operate: 'LIKE', searchable: true },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                        { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                        { field: 'count_total', title: '课节数'},
                        {
                            field: 'operate', title: __('Operate'), table: $('#table'), events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'edit',
                                    text: '编辑',
                                    title: '编辑班级',
                                    classname: 'btn btn-xs btn-success',
                                    icon: 'fa fa-pencil',
                                    url: 'classes/classes/edit'
                                }
                            ]
                        }
                    ]
                ];
            },

            // 获取社区表格列配置
            getCommunityTableColumns: function () {
                return [
                    [
                        { checkbox: true },
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = 'text-success'; // 社区班级使用绿色
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'community_id', title: '社区', operate: 'LIKE', searchable: true },
                        { field: 'ocation_id', title: '教学点', operate: 'LIKE', searchable: true },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                        { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                        { field: 'count_total', title: '课节数' },
                        {
                            field: 'operate', title: __('Operate'), events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'edit',
                                    text: '编辑',
                                    title: '编辑社区班级',
                                    classname: 'btn btn-xs btn-success',
                                    icon: 'fa fa-pencil',
                                    url: 'classes/classes/edit'
                                }
                            ]
                        }
                    ]
                ];
            },

            // 获取学校表格列配置
            getSchoolTableColumns: function () {
                return [
                    [
                        { checkbox: true },
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = 'text-primary'; // 学校班级使用蓝色
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'school_id', title: '学校', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'subject_lv', title: '课程类别' },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                        { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                        { field: 'count_total', title: '课节数' },
                        {
                            field: 'operate', title: __('Operate'), events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'edit',
                                    text: '编辑',
                                    title: '编辑学校班级',
                                    classname: 'btn btn-xs btn-success',
                                    icon: 'fa fa-pencil',
                                    url: 'classes/classes/edit'
                                }
                            ]
                        }
                    ]
                ];
            },

            // 获取校外表格列配置
            getExternalTableColumns: function () {
                return [
                    [
                        { checkbox: true },
                        { field: 'id', title: '班级ID', operate: '=', searchable: true },
                        {
                            field: 'sequence_number', title: '班级序号', sortable: true, formatter: function (value, row) {
                                if (row.formatted_sequence) {
                                    var typeClass = 'text-warning'; // 校外班级使用橙色
                                    return '<span class="' + typeClass + ' font-weight-bold">' + row.formatted_sequence + '</span>';
                                }
                                return '';
                            }
                        },
                        { field: 'city_id', title: '城市', operate: 'LIKE', searchable: true },
                        { field: 'name', title: '班级名称', operate: 'LIKE', searchable: true, formatter: Controller.api.formatter.className },
                        { field: 'community_id', title: '社区', operate: 'LIKE', searchable: true },
                        { field: 'cover', title: '班级头像', formatter: Table.api.formatter.image },
                        { field: 'start_date', title: '开始时间', formatter: Table.api.formatter.datetime },
                        { field: 'end_date', title: '结束时间', formatter: Table.api.formatter.datetime },
                        { field: 'count_total', title: '课节数' },
                        {
                            field: 'operate', title: __('Operate'), events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'edit',
                                    text: '编辑',
                                    title: '编辑校外班级',
                                    classname: 'btn btn-xs btn-success',
                                    icon: 'fa fa-pencil',
                                    url: 'classes/classes/edit'
                                }
                            ]
                        }
                    ]
                ];
            },

            // 处理Bootstrap Table的搜索事件
            handleBootstrapTableSearch: function (table, relType) {
                // 先移除可能存在的旧事件监听器，避免重复绑定
                table.off('search.bs.table');

                // 监听搜索框的搜索事件，完全接管搜索功能
                table.on('search.bs.table', function (e, text) {
                    // 阻止Bootstrap Table的默认搜索行为
                    e.preventDefault();

                    // 如果搜索框有内容，触发我们的自定义搜索
                    if (text && text.trim()) {
                        // 执行快速搜索并自动切换到"全部班级"
                        Controller.api.performQuickSearchWithAllClasses({
                            search: text.trim(),
                            rel_type: relType,
                            class_status: 'all'
                        });
                    } else {
                        // 空搜索，刷新表格显示所有数据
                        table.bootstrapTable('refresh');
                    }

                    // 返回false阻止默认行为
                    return false;
                });

            },

            // 绑定自定义搜索输入处理（辅助功能）
            bindCustomSearchInput: function (table, relType) {
                // 获取搜索输入框
                var $searchInput = table.closest('.bootstrap-table').find('.search input[name="search"]');

                if ($searchInput.length === 0) {
                    return;
                }

                // 添加搜索提示
                $searchInput.attr('placeholder', '输入班级ID或名称搜索...');

            },

            // 执行快速搜索并自动切换到全部班级
            performQuickSearchWithAllClasses: function (params) {
                // 显示搜索信息（后端会自动判断搜索类型）
                var relType = parseInt(params.rel_type);

                // 根据班级类型激活对应的主选项卡
                if (relType === 2) {
                    $('#mainClassTab a[data-reltype="2"]').tab('show');
                } else if (relType === 1) {
                    $('#mainClassTab a[data-reltype="1"]').tab('show');
                } else {
                    $('#mainClassTab a[data-reltype="3"]').tab('show');
                }

                // 激活"全部班级"按钮和选项卡
                setTimeout(function () {
                    Controller.api.activateAllClassesButton(relType === 1 ? 'school' : (relType === 2 ? 'community' : 'external'));

                    // 执行搜索并刷新动态表格
                    setTimeout(function () {
                        Controller.api.performQuickSearch(params);
                        // 刷新当前激活的动态表格（防御性检查）
                        var activeTab = $('.tab-pane.active');
                        var tableId = activeTab.find('table').attr('id');
                        if (tableId && $('#' + tableId).length > 0 && $('#' + tableId).data('bootstrap.table')) {
                            $('#' + tableId).bootstrapTable('refresh', { silent: true });
                        } else {
                        }
                    }, 200);
                }, 100);
            },

            // 格式化器对象
            formatter: {
                // 班级名称格式化器
                className: function (value, row, index) {
                    if (!value) return '';

                    // 添加班级名称样式和链接
                    var className = 'class-name-link';
                    var title = '点击查看班级详情';

                    // 根据班级状态添加不同的样式
                    if (row.status == 1) {
                        className += ' text-success';
                    } else if (row.status == 0) {
                        className += ' text-muted';
                    }

                    return '<span class="' + className + '" title="' + title + '">' + value + '</span>';
                }
            },

            // 激活指定类型的“全部班级”按钮
            activateAllClassesButton: function (classType) {
                var controllerSelector = '';

                if (classType === 'school') {
                    controllerSelector = '#school-class-toggle-controller';
                } else if (classType === 'community') {
                    controllerSelector = '#community-class-toggle-controller';
                } else if (classType === 'external') {
                    controllerSelector = '#external-class-toggle-controller';
                }

                if (controllerSelector) {
                    // 重置所有按钮状态
                    $(controllerSelector + ' .btn').removeClass('btn-primary active').addClass('btn-outline-secondary');

                    // 激活“全部班级”按钮
                    $(controllerSelector + ' .toggle-all').removeClass('btn-outline-secondary').addClass('btn-primary active');

                    // 显示/隐藏对应的tab-pane
                    if (classType === 'school') {
                        $('#schoolAll, #schoolOngoing, #schoolEnded, #schoolUnscheduled').removeClass('active in');
                        $('#schoolAll').addClass('active in');
                    } else if (classType === 'community') {
                        $('#communityAll, #communityOngoing, #communityEnded, #communityUnscheduled').removeClass('active in');
                        $('#communityAll').addClass('active in');
                    } else if (classType === 'external') {
                        $('#externalAll, #externalOngoing, #externalEnded, #externalUnscheduled').removeClass('active in');
                        $('#externalAll').addClass('active in');
                    }

                }
            }
        }
    };
    return Controller;
});